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 lain, dalam hal ini otoritas sertifikat yang dikelola oleh Login OS. Dokumen ini menjelaskan cara menyiapkan VM Login OS agar memerlukan sertifikat SSH untuk koneksi SSH dan memblokir koneksi dari kunci SSH yang tidak bertanda tangan.

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. Masa berlaku sertifikat SSH adalah 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 bagi koneksi SSH sebagai lapisan keamanan tambahan terhadap pengguna berbahaya. Sertifikat SSH berumur pendek dan hanya valid untuk VM tertentu, yang berarti jika dibobol, permukaan serangannya jauh lebih kecil dan jendela serangannya jauh lebih pendek daripada kunci SSH yang berumur panjang.

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.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.

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 konsol Google Cloud dan gcloud CLI akan menggunakan sertifikat SSH secara default. Jika Anda tidak ingin menyiapkan Login OS untuk mewajibkan sertifikat, tetapi 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 konsol Google Cloud atau gcloud CLI.

Konsol

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

  1. Buka halaman Metadata.

    Buka Metadata

  2. Klik Edit.

  3. Klik Tambahkan item.

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

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

gcloud

Untuk mewajibkan sertifikat SSH untuk semua koneksi ke VM yang mendukung 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 bagi semua koneksi SSH ke satu VM yang menggunakan Login OS, gunakan konsol Google Cloud atau gcloud CLI.

Konsol

Untuk mewajibkan sertifikat SSH bagi semua koneksi ke satu VM, gunakan konsolGoogle Cloud untuk menyetel enable-oslogin dan enable-oslogin-certificates ke TRUE dalam metadata instance:

  1. Buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang ingin Anda tetapkan agar memerlukan sertifikat SSH.

  3. Klik Edit.

  4. Di bagian Metadata, klik Tambahkan item.

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

    1. Pada kolom Kunci, masukkan enable-oslogin-certificates.
    2. Di 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 tidak ingin menyiapkan Login OS untuk mewajibkan sertifikat, tetapi ingin menggunakan sertifikat untuk terhubung ke VM, Anda harus terhubung menggunakan alat pihak ketiga.

Konsol

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

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Gunakan perintah gcloud beta compute ssh 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: project 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 dilampirkan 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 kontennya 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 memerlukan sertifikat SSH, hal ini mungkin disebabkan oleh hal berikut:

Apa langkah selanjutnya?