Air-gapped Google Distributed Cloud (GDC) menggunakan autentikasi SSH berbasis kunci untuk membuat koneksi ke instance virtual machine (VM). Secara default, sandi tidak dikonfigurasi untuk pengguna lokal di VM dengan sistem operasi (OS).
Sebelum memulai
Sebelum terhubung ke VM, Anda harus memenuhi prasyarat berikut:
- Aktifkan pengelolaan akses. Anda tidak dapat melanjutkan tanpa mengaktifkan pengelolaan akses di lingkungan tamu. Secara default, pengelolaan akses diaktifkan di VM baru.
- Aktifkan akses eksternal VM untuk peer mana pun di port Transmission Control Protocol (TCP) 22.
ProjectNetworkPolicy
(PNP)
di project tempat VM berada.
- Dengan menyiapkan PNP di project, Anda dapat mengakses VM di luar project atau organisasi.
- Untuk mendiagnosis apakah Anda tidak memiliki PNP, tanyakan kepada Operator Infrastruktur (IO) Anda.
Untuk menggunakan perintah antarmuka command line (CLI) gdcloud
, pastikan Anda telah mendownload, menginstal,
dan mengonfigurasi CLI gdcloud
.
Semua perintah untuk Distributed Cloud menggunakan CLI gdcloud
atau
kubectl
, dan memerlukan lingkungan sistem operasi (OS).
Mendapatkan jalur file kubeconfig
Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:
Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.
Gunakan jalur ke file kubeconfig server Management API untuk menggantikan
MANAGEMENT_API_SERVER
dalam petunjuk ini.
Meminta izin dan akses
Untuk melakukan tugas yang tercantum di halaman ini, Anda harus memiliki peran Project VirtualMachine Admin. Ikuti langkah-langkah untuk
memverifikasi
bahwa Anda memiliki peran Project VirtualMachine Admin (project-vm-admin
) di namespace
project tempat VM berada.
Untuk operasi VM menggunakan konsol GDC atau gdcloud CLI, minta Admin IAM Project Anda untuk memberi Anda peran Project VirtualMachine Admin dan peran Project Viewer (project-viewer
).
Membuat koneksi VM
Bagian ini menjelaskan cara membuat koneksi ke VM dengan sistem operasi (OS) tertentu.
Menghubungkan ke VM
Untuk membuat koneksi ke VM dengan OS tertentu, gunakan konsol GDC, gdcloud CLI, atau Virtual Machine Manager API.
Konsol
Di menu navigasi, klik Virtual Machines > Instances.
Dalam daftar VM, temukan baris untuk VM yang sedang berjalan yang ingin Anda hubungkan. Di kolom Connect, klik SSH.
Terminal browser SSH akan terbuka. Masukkan perintah apa pun di shell atau klik FTP untuk menjelajahi struktur file dan mengupload file.
gdcloud
Hubungkan ke VM menggunakan SSH dengan menjalankan perintah gdcloud compute ssh
gdcloud compute ssh VM_NAME --project=PROJECT_ID
Ganti variabel berikut:
- VM_NAME: nama VM.
- PROJECT_ID: ID project yang berisi VM.
Jika telah
menetapkan properti default
untuk CLI, Anda dapat menghilangkan flag --project
dari perintah ini. Contoh:
gdcloud compute ssh VM_NAME
API
Menghubungkan ke VM:
- Buka terminal.
- Buat pasangan kunci SSH.
- Upload kunci publik dan nama pengguna dengan nilai time-to-live (TTL).
GDC mengambil kunci SSH dan nama pengguna, lalu membuat akun pengguna dengan nama pengguna tersebut. Di VM, GDC menyimpan kunci publik dalam file ~/.ssh/authorized_keys
pengguna Anda di VM.
Selesaikan langkah-langkah berikut untuk terhubung ke VM dari command line:
Buat pasangan kunci SSH dan nama pengguna.
Di workstation OS, gunakan utilitas
ssh-keygen
untuk membuat pasangan kunci SSH baru. Contoh kode berikut membuat pasangan kunci RSA (Rivest–Shamir–Adleman):ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048
Ganti variabel dengan menggunakan definisi berikut.
Variabel Definisi KEY_FILENAME
Nama untuk file kunci SSH Anda. Misalnya, nama file my-ssh-key
menghasilkan file kunci pribadi bernamamy-ssh-key
dan file kunci publik bernamamy-ssh-key.pub
.USERNAME
Nama pengguna Anda di VM, seperti testuser
atautestuser_gmail_com
.Utilitas
ssh-keygen
menyimpan file kunci pribadi Anda di jalur~/.ssh/KEY_FILENAME
dan file kunci publik Anda di jalur~/.ssh/KEY_FILENAME.pub
.Kunci publik untuk pengguna,
testuser
, mirip dengan contoh berikut:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser
Upload kunci Anda ke VM dan buat resource Kubernetes dengan kunci publik, nama pengguna, dan nilai time to live (TTL) untuk kunci tersebut.
Contoh berikut menggunakan file
access_request.yaml
untuk memberikan akses ke instance VM dengan kunci pribadiKEY_FILENAME
dan nilai TTL sepuluh menit:apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: namespace: VM_NAMESPACE name: AR_NAME spec: ssh: key: | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco ttl: 10m user: USERNAME vm: VM_NAME
Ganti variabel, menggunakan definisi berikut:
Variabel Definisi VM_NAMESPACE
Namespace untuk VM. AR_NAME
Nama permintaan akses. USERNAME
Nama pengguna Anda di VM, seperti testuser
atautestuser_gmail_com
.VM_NAME
Nama instance VM. Buat kunci:
kubectl create -f access_request.yaml --kubeconfig MANAGEMENT_API_SERVER
Periksa status permintaan akses Anda:
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Ganti
VM_NAMESPACE
dengan namespace untuk VM.Status
configured
menunjukkan bahwa Anda dapat terhubung ke VM.Hubungkan ke VM:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Ganti nilai berikut:
PATH_TO_PRIVATE_KEY
dengan jalur ke file kunci SSH pribadi yang sesuai dengan kunci publik yang Anda tambahkan ke VM.USERNAME
dengan nama pengguna yang Anda tentukan saat membuat kunci SSH. Misalnya,cloudysanfrancisco_example_com
ataucloudysanfrancisco
.EXTERNAL_IP
dengan alamat IP ingress eksternal VM.
Pemecahan masalah
Bagian ini menjelaskan cara memecahkan masalah yang mungkin terjadi saat menghubungkan ke instance VM setelah membuat permintaan akses.
Ikuti langkah-langkah berikut untuk mengidentifikasi kemungkinan masalah:
Pastikan VM sedang berjalan. Ganti variabel yang dapat diedit dengan nilai Anda dalam perintah berikut:
kubectl get virtualmachines.virtualmachine.gdc.goog VM_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Jika VM tidak berjalan, Anda tidak dapat terhubung atau mengonfigurasi permintaan baru.
Pastikan VM telah berjalan selama beberapa menit. Jika VM baru saja dimulai, layanan yang diperlukan untuk akses SSH mungkin belum berjalan. Biasanya, proses ini berjalan dalam waktu lima menit setelah booting.
Pastikan Anda tidak melebihi nilai TTL pada permintaan akses. Kunci dihapus setelah waktu mencapai nilai TTL.
Jika
VirtualMachineAccessRequest
Anda menampilkan statusconfigured
, pastikan persyaratan berikut:- Anda mengaktifkan transfer data di ke VM Anda di port 22.
- Mesin Anda merutekan ke VM. Misalnya, Anda dapat menggunakan perintah
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22
untuk memeriksa pemilihan rute.
Jika
VirtualMachineAccessRequest
Anda menampilkan statusfailed
, lihat status lengkap dan tinjau pesan error yang menunjukkan penyebab permintaan gagal:kubectl describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Ganti variabel yang dapat diedit dalam perintah sebelumnya dengan nilai Anda sendiri.
Jika status
VirtualMachineAccessRequest
Anda kosong, lingkungan tamu mungkin tidak berjalan.