Menyiapkan Login OS untuk mewajibkan sertifikat SSH untuk koneksi SSH

VM yang mendukung sertifikat Login OS mendukung koneksi dari kunci SSH dan sertifikat SSH. Sertifikat SSH adalah kunci SSH yang telah ditandatangani oleh kunci tepercaya lainnya, dalam hal ini otoritas sertifikat yang dikelola Login OS. Dokumen ini menjelaskan cara menyiapkan VM Login OS untuk mewajibkan sertifikat SSH untuk koneksi SSH dan memblokir koneksi dari kunci SSH yang tidak ditandatangani.

Saat Anda menyiapkan Login OS untuk mewajibkan sertifikat SSH untuk koneksi ke VM, hanya sertifikat SSH yang telah ditandatangani oleh otoritas sertifikat yang diizinkan untuk terhubung ke VM; koneksi dari kunci SSH yang tidak ditandatangani akan ditolak. Sertifikat SSH memiliki masa berlaku lima menit, setelah itu sertifikat tidak dapat lagi digunakan untuk terhubung ke VM dan sertifikat baru harus dibuat.

Sebaiknya siapkan Login OS untuk mewajibkan sertifikat SSH untuk koneksi SSH sebagai lapisan keamanan tambahan terhadap pengguna berbahaya. Sertifikat SSH memiliki masa berlaku singkat dan hanya berlaku untuk VM tertentu, yang berarti jika sertifikat tersebut dibobol, permukaan serangan akan jauh lebih kecil dan jendela serangan akan jauh lebih singkat daripada kunci SSH yang memiliki masa berlaku lama.

Jika organisasi Anda menggunakan workforce identity federation, lihat Menggunakan workforce identity federation dengan Login OS untuk mempelajari cara mengaktifkan sertifikat SSH untuk organisasi Anda.

Sebelum memulai

  • Siapkan Login OS dan tetapkan peran IAM Login OS.
  • Siapkan autentikasi jika Anda belum melakukannya. Autentikasi memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Google Cloud konsol untuk mengakses Google Cloud layanan dan API, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu .

  • Tetapkan region dan zona default.

Batasan

  • VM yang Anda hubungkan harus memiliki OpenSSH versi 7.4 atau yang lebih baru untuk menggunakan sertifikat SSH.

Mewajibkan sertifikat SSH

Anda dapat menyiapkan Login OS untuk mewajibkan sertifikat SSH untuk semua koneksi SSH ke VM Login OS di project Anda, atau untuk VM tunggal. Setelah Anda menyiapkan Login OS untuk mewajibkan sertifikat SSH, koneksi SSH dari Google Cloud konsol dan gcloud CLI akan menggunakan sertifikat SSH secara default. Jika Anda tidak ingin menyiapkan Login OS untuk mewajibkan sertifikat, tetapi Anda ingin menggunakan sertifikat untuk terhubung ke VM, Anda harus terhubung menggunakan alat pihak ketiga, seperti yang dijelaskan di bagian Menghubungkan ke VM menggunakan sertifikat SSH.

Mewajibkan sertifikat SSH untuk semua VM yang mengaktifkan Login OS dalam sebuah project

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke semua VM yang menggunakan Login OS di project Anda, gunakan Google Cloud konsol atau gcloud CLI.

Konsol

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke VM yang mengaktifkan Login OS, gunakan konsol Google Cloud untuk menetapkan enable-oslogin dan enable-oslogin-certificates ke TRUE di metadata project:

  1. Buka halaman Metadata.

    Buka Metadata

  2. Klik Edit.

  3. Klik Tambahkan item.

    1. Pada kolom Kunci, masukkan enable-oslogin.
    2. Pada kolom Nilai, masukkan TRUE.
  4. Klik Tambahkan item.

    1. Pada kolom Kunci, masukkan enable-oslogin-certificates.
    2. Pada kolom Nilai, masukkan TRUE.
  5. Klik Simpan.

gcloud

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke VM yang mengaktifkan Login OS, gunakan perintah gcloud compute project-info add-metadata untuk menetapkan enable-oslogin=TRUE dan enable-oslogin-certificates=TRUE di metadata project:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Mewajibkan sertifikat SSH di satu VM yang mengaktifkan Login OS

Untuk mewajibkan sertifikat untuk semua koneksi SSH ke satu VM yang menggunakan Login OS, gunakan Google Cloud konsol atau gcloud CLI.

Konsol

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke satu VM, gunakan Google Cloud konsol untuk menetapkan enable-oslogin dan enable-oslogin-certificates ke TRUE di metadata instance:

  1. Buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang sertifikat SSH-nya ingin Anda wajibkan.

  3. Klik Edit.

  4. Di bagian Metadata, klik Tambahkan item.

    1. Pada kolom Kunci, masukkan enable-oslogin.
    2. Pada kolom Nilai, masukkan TRUE.
  5. Klik Tambahkan item.

    1. Pada kolom Kunci, masukkan enable-oslogin-certificates.
    2. Pada kolom Nilai, masukkan TRUE.
  6. Klik Simpan.

gcloud

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke satu VM, gunakan perintah gcloud compute instances add-metadata untuk menetapkan enable-oslogin=TRUE dan enable-oslogin-certificates=TRUE di metadata instance:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Ganti VM_NAME dengan nama VM Anda.

Menghubungkan ke VM menggunakan sertifikat SSH

Setelah Anda menyiapkan Login OS untuk mewajibkan sertifikat SSH, koneksi SSH dari konsol Google Cloud dan gcloud CLI akan menggunakan sertifikat SSH secara default. Jika Anda tidak ingin menyiapkan Login OS untuk mewajibkan sertifikat, tetapi Anda ingin menggunakan sertifikat untuk terhubung ke VM, Anda harus terhubung menggunakan alat pihak ketiga.

Konsol

Hubungkan ke VM menggunakan SSH-in-browser dari Google Cloud konsol, dengan melakukan hal berikut:

  1. Di Google Cloud konsol, buka halaman VM instances.

    Buka instance VM

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.

    Tombol SSH di samping nama instance.

gcloud

Gunakan gcloud beta compute ssh perintah untuk terhubung ke VM menggunakan sertifikat:

gcloud beta compute ssh VM_NAME

Ganti VM_NAME dengan nama VM yang ingin Anda hubungkan.

Alat pihak ketiga

Untuk menggunakan sertifikat SSH dengan klien SSH pihak ketiga, lakukan hal berikut:

  1. Buat kunci SSH jika Anda belum memilikinya.

  2. Tandatangani kunci SSH publik Anda menggunakan metode projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project yang berisi VM yang ingin Anda hubungkan
    • LOCATION: region tempat VM yang ingin Anda hubungkan berada
    • PUBLIC_KEY: konten file kunci publik SSH Anda
    • COMPUTE_INSTANCE: instance Compute Engine yang akan dihubungkan, dalam format projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: akun layanan yang terlampir ke instance. Hapus kolom ini jika instance tidak memiliki akun layanan yang terlampir.
  3. Salin sertifikat SSH dari output metode projects.locations.signSshPublicKey dan simpan konten dalam file baru.

  4. Tetapkan izin pada file sertifikat SSH, dengan menjalankan perintah berikut:

    sudo chmod 600 FILE_NAME
    

    Ganti FILE_NAME dengan nama file.

  5. Hubungkan ke VM menggunakan perintah berikut:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Ganti kode berikut:

    • PATH_TO_PRIVATE_KEY: jalur ke file kunci SSH pribadi Anda.
    • PATH_TO_SSH_CERTIFICATE: jalur ke file sertifikat SSH Anda.
    • USERNAME: nama pengguna Login OS Anda
    • EXTERNAL_IP: alamat IP eksternal VM.

Pemecahan masalah

Jika Anda tidak dapat terhubung ke VM yang telah Anda siapkan untuk mewajibkan sertifikat SSH, hal ini mungkin disebabkan oleh hal berikut:

Apa langkah selanjutnya?