Dokumen ini menjelaskan cara mencegah pengguna mengakses instance virtual machine (VM) dengan menghapus dan memblokir kunci SSH dari VM.
Sebelum memulai
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
Menghapus kunci SSH
Anda dapat menghapus kunci SSH dari VM yang menggunakan Login OS dan VM yang menggunakan kunci SSH berbasis metadata.Menghapus kunci SSH dari VM yang menggunakan Login OS
VM yang menggunakan Login OS menerima kunci SSH yang terkait dengan Akun Google Anda. Anda dapat menghapus kunci SSH publik dari akun pengguna menggunakan Google Cloud CLI atau OS Login API. Jika Anda adalah administrator untuk organisasi, Anda dapat menghapus kunci SSH dari akun pengguna menggunakan Directory API. Compute Engine otomatis menghapus kunci yang sudah tidak berlaku dari Akun Google Anda.
gcloud
Untuk menghapus kunci SSH publik dari akun Anda, lakukan hal berikut:
Jika tidak tahu kunci mana yang ingin dihapus, jalankan perintah
gcloud compute os-login describe-profile
untuk melihat semua kunci yang terkait dengan akun Anda:gcloud compute os-login describe-profile
Salin nilai
fingerprint
kunci yang ingin dihapus.Hapus kunci dari akun Anda menggunakan perintah
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Ganti
KEY
dengan kunci SSH publik yang ingin Anda hapus, atau sidik jari Login OS untuk kunci yang ingin Anda hapus.
REST
Untuk menghapus kunci SSH publik dari akun Anda, lakukan hal berikut:
Jika tidak tahu kunci mana yang ingin dihapus, gunakan metode
users.getLoginProfile
untuk melihat semua kunci yang terkait dengan akun Anda:GET https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/loginProfile
Ganti
ACCOUNT_EMAIL
dengan alamat email yang terkait dengan akun Anda.Salin nilai
fingerprint
kunci yang ingin dihapus.Hapus kunci dari akun menggunakan metode
users.sshPublicKeys.delete
:DELETE https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/sshPublicKeys/FINGERPRINT
Ganti kode berikut:
ACCOUNT_EMAIL
: alamat email yang terkait dengan akun Anda.FINGERPRINT
: sidik jari SHA-256 kunci yang akan dihapus
Menghapus kunci SSH dari VM yang menggunakan kunci berbasis metadata
Anda dapat menghapus kunci SSH publik dari project atau metadata instance menggunakan Google Cloud Console, gcloud CLI, atau Compute Engine API.
Setelah Anda menghapus kunci terakhir dari metadata untuk pengguna tertentu, atau kunci terakhir dalam metadata untuk pengguna tertentu sudah tidak berlaku, Compute Engine akan menghapus file ~/.ssh/authorized_keys
pengguna di VM.
Menghapus kunci publik dari metadata project
Hapus kunci SSH publik dari metadata project untuk menghapus akses ke semua VM dalam project.
Saat menghapus kunci dari metadata menggunakan gcloud CLI dan Compute Engine API, Anda harus mengambil daftar kunci yang ada, mengedit daftar kunci untuk menghapus kunci yang tidak diinginkan, dan menimpa kunci lama dengan daftar kunci yang ingin Anda pertahankan, seperti yang dijelaskan di bagian berikut.
Konsol
Untuk menghapus kunci SSH publik dari metadata project menggunakan Konsol Google Cloud, lakukan hal berikut:
Di Konsol Google Cloud, buka halaman Metadata.
Pada bagian SSH Keys, klik Edit.
Klik tombol penghapusan di sebelah kunci SSH.
Klik Save.
gcloud
Untuk menghapus kunci SSH publik dari metadata project menggunakan gcloud CLI, lakukan langkah berikut:
Jalankan perintah
gcloud compute project-info describe
untuk mendapatkan metadata project:gcloud compute project-info describe
Outputnya mirip dengan hal berikut ini:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Salin nilai metadata
ssh-keys
.Buat dan buka file teks baru di workstation Anda.
Di dalam file tersebut, tempel daftar kunci SSH yang baru saja Anda salin, lalu hapus kunci apa pun yang ingin dihapus dari metadata project.
Simpan dan tutup file tersebut.
Jalankan perintah
gcloud compute project-info add-metadata
untuk menetapkan nilaissh-keys
di seluruh project:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Ganti
KEY_FILE
dengan salah satu dari yang berikut ini:- jalur ke file yang Anda buat di langkah sebelumnya, jika project memiliki kunci SSH yang ada
- jalur ke file kunci SSH publik baru, jika project tidak memiliki kunci SSH
REST
Untuk menghapus kunci SSH publik dari metadata project menggunakan Compute Engine API, lakukan hal berikut:
Gunakan metode
projects.get
untuk mendapatkan nilaifingerprint
danssh-keys
dari metadata.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Anda.Responsnya mirip dengan yang berikut ini:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Salin daftar nilai kunci SSH dan hapus kunci yang ingin dihapus.
Gunakan
projects.setCommonInstanceMetadata
untuk menghapus kunci SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS" } ] "fingerprint": "FINGERPRINT" }
Ganti kode berikut:
PROJECT_ID
: ID project AndaEXISTING_SSH_KEYS
: daftar kunci SSH yang ingin Anda pertahankanFINGERPRINT
: nilaifingerprint
dari respons permintaanprojects.get
Menghapus kunci SSH publik dari metadata instance
Hapus kunci SSH publik dari metadata instance untuk menghapus akses ke satu VM.
Saat menghapus kunci dari metadata menggunakan gcloud CLI dan Compute Engine API, Anda harus mengambil daftar kunci yang ada, mengedit daftar kunci untuk menghapus kunci yang tidak diinginkan, dan menimpa kunci lama dengan daftar kunci yang ingin disimpan, seperti yang dijelaskan di bagian berikut.
Konsol
Untuk menghapus kunci SSH publik dari metadata instance menggunakan Konsol Google Cloud, lakukan hal berikut:
Di Konsol Google Cloud, buka halaman Metadata.
Klik nama VM yang ingin Anda hapus kuncinya.
Klik Edit.
Di panel tengah, pada bagian SSH Keys, klik Show and edit. Bagian ini akan diperluas untuk menampilkan semua kunci SSH publik level instance.
Klik tombol penghapusan di samping kunci yang ingin dihapus:
Klik Save.
gcloud
Untuk menghapus kunci SSH publik dari metadata instance menggunakan gcloud CLI, lakukan langkah berikut:
Jalankan perintah
gcloud compute instances describe
untuk mendapatkan metadata untuk VM:gcloud compute instances describe VM_NAME
Ganti VM_NAME dengan nama VM yang perlu Anda tambahkan atau hapus kunci SSH publik.
Outputnya mirip dengan hal berikut ini:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Salin nilai metadata
ssh-keys
.Buat dan buka file teks baru di workstation lokal.
Di dalam file tersebut, tempel daftar kunci SSH yang baru saja Anda salin, lalu hapus kunci yang ingin dihapus.
Simpan dan tutup file tersebut.
Jalankan perintah
gcloud compute project-info add-metadata
untuk menetapkan nilaissh-keys
di seluruh project:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Ganti kode berikut:
VM_NAME
: VM yang ingin Anda hapus kunci SSH-nyaKEY_FILE
: jalur ke file yang berisi daftar semua kunci SSH project
REST
Untuk menghapus kunci SSH publik dari metadata instance menggunakan Compute Engine API, lakukan hal berikut:
Gunakan metode
instances.get
untuk mendapatkan nilaifingerprint
danssh-keys
dari metadata.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Ganti kode berikut:
PROJECT_ID
: ID project AndaZONE
: zona VM yang Anda tambahkan kunci SSH-nyaVM_NAME
: VM tempat Anda menambahkan kunci SSH
Responsnya mirip dengan hal berikut ini:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Salin daftar nilai kunci SSH dan hapus kunci yang ingin dihapus.
Gunakan
instances.setMetadata
untuk menghapus kunci SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS } ] "fingerprint": "FINGERPRINT" }
Ganti kode berikut:
PROJECT_ID
: ID project AndaEXISTING_SSH_KEYS
: nilai kuncissh-keys
dari respons permintaanprojects.get
FINGERPRINT
: nilaifingerprint
dari respons permintaaninstances.get
Memblokir kunci SSH project dari VM yang menggunakan kunci SSH berbasis metadata
Anda dapat mencegah VM menerima kunci SSH yang disimpan dalam metadata project dengan memblokir kunci SSH project dari VM. Anda dapat memblokir kunci SSH project dari VM saat membuat VM atau setelah membuat VM.
Memblokir kunci SSH project dari VM selama pembuatan VM
Anda dapat memblokir kunci SSH project dari VM selama pembuatan VM menggunakan Konsol Google Cloud, gcloud CLI, atau Compute Engine API.
Konsol
Untuk membuat VM dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan Konsol Google Cloud, lakukan langkah berikut:
Di Konsol Google Cloud, buka halaman Create an instance.
Tentukan detail VM.
Luaskan bagian Advanced options, dan lakukan hal berikut:
Luaskan bagian Security.
Centang Block project-wide SSH keys.
Untuk membuat dan memulai VM, klik Create.
gcloud
Untuk membuat VM dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan gcloud CLI, gunakan perintah gcloud compute instances create
:
gcloud compute instances create VM_NAME \ --metadata block-project-ssh-keys=TRUE
Ganti VM_NAME
dengan nama VM baru.
REST
Untuk membuat VM dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan Compute Engine, buat permintaan POST
ke metode instances.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Ganti kode berikut:
PROJECT_ID
: the project IDZONE
: zona VM
Dalam isi permintaan, berikan nama pengguna dan kunci SSH publik di properti items
:
... { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] } ...
Memblokir kunci SSH project dari VM setelah pembuatan VM
Anda dapat memblokir kunci SSH project dari VM setelah pembuatan VM menggunakan Google Cloud Console, gcloud CLI, atau Compute Engine API.
Konsol
Untuk mencegah VM menerima koneksi dari kunci SSH yang disimpan dalam metadata project menggunakan Konsol Google Cloud, lakukan tindakan berikut:
Di Konsol Google Cloud, buka halaman Metadata.
Klik nama VM yang kunci SSH project-nya ingin Anda blokir.
Klik Edit.
Pada SSH Keys, centang Block project-wide SSH keys.
Setelah selesai mengedit setelan koneksi untuk kunci SSH, klik Save.
gcloud
Untuk memblokir VM agar tidak menerima koneksi dari kunci SSH yang disimpan dalam metadata project menggunakan gcloud CLI, lakukan hal berikut:
Jalankan
perintah gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE
Ganti VM_NAME
dengan nama VM yang kunci SSH publiknya ingin Anda blokir.
REST
Untuk mencegah VM menerima koneksi dari kunci SSH yang disimpan dalam metadata project menggunakan Compute Engine API, lakukan tindakan berikut:
Gunakan metode
instances.get
untuk mendapatkanfingerprint
dari metadata.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Ganti kode berikut:
PROJECT_ID
: ID project AndaZONE
: zona VM yang Anda tambahkan kunci SSH-nyaVM_NAME
: VM tempat Anda menambahkan kunci SSH
Responsnya mirip dengan hal berikut ini:
... "fingerprint": "utgYE_XWtE8=" ...
Gunakan metode
instances.setMetadata
untuk menyetelblock-project-ssh-keys
keTRUE
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] "fingerprint": "FINGERPRINT" }
Ganti kode berikut:
PROJECT_ID
adalah ID project AndaZONE
adalah zona tempat instance Anda beradaINSTANCE_NAME
adalah instance tempat Anda ingin memblokir kunci seluruh project.FINGERPRINT
: nilaifingerprint
dari respons permintaaninstances.get
.
Apa langkah selanjutnya?
- Pelajari manfaat menggunakan Login OS untuk pengelolaan akses.
- Terhubung ke VM menggunakan alat Google sehingga Anda tidak perlu mengelola kunci SSH sendiri.