Google Distributed Cloud (GDC) air-gapped utilizza l'autenticazione SSH basata su chiavi per stabilire connessioni alle istanze di macchine virtuali (VM). Per impostazione predefinita, le password non sono configurate per gli utenti locali sulle VM con un sistema operativo (OS).
Prima di iniziare
Prima di connetterti a una VM, devi soddisfare i seguenti prerequisiti:
- Abilitare la gestione dell'accesso. Non puoi procedere senza la gestione dell'accesso abilitata nell'ambiente guest. Per impostazione predefinita, la gestione dell'accesso è abilitata sulle nuove VM.
- Attiva l'accesso esterno alla VM per qualsiasi peer sulla porta 22 del Transmission Control Protocol (TCP).
ProjectNetworkPolicy
(PNP)
nel progetto in cui si trova la VM.
- Se configuri un PNP nel progetto, puoi accedere alla VM al di fuori del progetto o dell'organizzazione.
- Per diagnosticare se non hai un PNP, chiedi all'operatore dell'infrastruttura (IO).
Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud
, assicurati di aver scaricato, installato e configurato la CLI gdcloud
.
Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud
o
kubectl
e richiedono un ambiente del sistema operativo.
Recupera il percorso del file kubeconfig
Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:
Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.
Utilizza il percorso del file kubeconfig del server API Management per sostituire
MANAGEMENT_API_SERVER
in queste istruzioni.
Richiedere autorizzazioni e accesso
Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore
macchina virtuale progetto. Segui i passaggi per
verificare
di disporre del ruolo Amministratore VirtualMachine progetto (project-vm-admin
) nello spazio dei nomi
del progetto in cui si trova la VM.
Per le operazioni sulle VM che utilizzano la console GDC o gcloud CLI,
chiedi all'amministratore IAM del progetto di assegnarti sia il ruolo
Project VirtualMachine Admin sia il ruolo Project Viewer (project-viewer
).
Stabilisci una connessione VM
Questa sezione descrive come stabilire una connessione a una VM con un sistema operativo specifico.
Connettiti a una VM
Per stabilire una connessione a una VM con un sistema operativo specifico, utilizza la console GDC, gcloud CLI o l'API Virtual Machine Manager.
Console
Nel menu di navigazione, fai clic su Virtual Machines > Instances.
Nell'elenco delle VM, individua la riga della VM in esecuzione a cui vuoi connetterti. Nella colonna Connetti, fai clic su SSH.
Si apre un terminale del browser SSH. Inserisci un comando nella shell o fai clic su FTP per navigare nella struttura dei file e caricare i file.
gdcloud
Connettiti a una VM utilizzando SSH eseguendo il comando gdcloud compute ssh
gdcloud compute ssh VM_NAME --project=PROJECT_ID
Sostituisci le seguenti variabili:
- VM_NAME: il nome della VM.
- PROJECT_ID: l'ID del progetto che contiene la VM.
Se hai
impostato proprietà predefinite
per la CLI, puoi omettere il flag --project
da questo comando. Ad esempio:
gdcloud compute ssh VM_NAME
API
Connettiti a una VM:
- Apri un terminale.
- Crea una coppia di chiavi SSH.
- Carica la chiave pubblica e il nome utente con un valore Time To Live (TTL).
GDC recupera la chiave SSH e il nome utente e crea un account utente con il nome utente. Sulle VM, GDC
memorizza la chiave pubblica nel file ~/.ssh/authorized_keys
dell'utente sulla
VM.
Per connetterti a una VM dalla riga di comando, completa i seguenti passaggi:
Crea una coppia di chiavi SSH e un nome utente.
Sulle workstation OS, utilizza l'utilità
ssh-keygen
per creare una nuova coppia di chiavi SSH. Il seguente esempio di codice crea una coppia di chiavi RSA (Rivest-Shamir-Adleman):ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048
Sostituisci le variabili utilizzando le seguenti definizioni.
Variabile Definizione KEY_FILENAME
Il nome del file di chiave SSH. Ad esempio, il nome file my-ssh-key
genera un file di chiavi private denominatomy-ssh-key
e un file di chiavi pubbliche denominatomy-ssh-key.pub
.USERNAME
Il tuo nome utente sulla VM, ad esempio testuser
otestuser_gmail_com
.L'utilità
ssh-keygen
salva il file della chiave privata nel percorso~/.ssh/KEY_FILENAME
e il file della chiave pubblica nel percorso~/.ssh/KEY_FILENAME.pub
.Una chiave pubblica per l'utente,
testuser
, è simile al seguente esempio:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser
Carica la chiave nella VM e crea una risorsa Kubernetes con la chiave pubblica, il nome utente e il valore durata (TTL) per la chiave.
L'esempio seguente utilizza un file
access_request.yaml
per concedere l'accesso all'istanza VM con la chiave privataKEY_FILENAME
e un valore TTL di dieci minuti: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
Sostituisci le variabili utilizzando le seguenti definizioni:
Variabile Definizione VM_NAMESPACE
Lo spazio dei nomi per la VM. AR_NAME
Il nome della richiesta di accesso. USERNAME
Il tuo nome utente sulla VM, ad esempio testuser
otestuser_gmail_com
.VM_NAME
Il nome dell'istanza VM. Crea la chiave:
kubectl create -f access_request.yaml --kubeconfig MANAGEMENT_API_SERVER
Controlla lo stato della tua richiesta di accesso:
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Sostituisci
VM_NAMESPACE
con lo spazio dei nomi della VM.Uno stato
configured
indica che puoi connetterti alla VM.Connettiti alla VM:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Sostituisci i seguenti valori:
PATH_TO_PRIVATE_KEY
con il percorso del file della chiave SSH privata corrispondente alla chiave pubblica che hai aggiunto alla VM.USERNAME
con il nome utente specificato durante la creazione della chiave SSH. Ad esempio,cloudysanfrancisco_example_com
ocloudysanfrancisco
.EXTERNAL_IP
con l'indirizzo IP in entrata esterno della VM.
Risoluzione dei problemi
Questa sezione descrive come risolvere i problemi che potrebbero verificarsi durante la connessione a un'istanza VM dopo la creazione della richiesta di accesso.
Segui questi passaggi per identificare i possibili problemi:
Verifica che la VM sia in esecuzione. Sostituisci le variabili modificabili con i tuoi valori nel seguente comando:
kubectl get virtualmachines.virtualmachine.gdc.goog VM_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Se la VM non è in esecuzione, non puoi connetterti o configurare nuove richieste.
Verifica che la VM sia in esecuzione da alcuni minuti. Se la VM è appena stata avviata, i servizi richiesti per l'accesso SSH potrebbero non essere ancora in esecuzione. In genere, vengono eseguiti entro cinque minuti dall'avvio.
Verifica di non aver superato il valore TTL nella richiesta di accesso. La chiave viene rimossa dopo che il tempo raggiunge il valore TTL.
Se il tuo
VirtualMachineAccessRequest
mostra lo statoconfigured
, verifica i seguenti requisiti:- Hai attivato il trasferimento dei dati in alla tua VM sulla porta 22.
- La tua macchina esegue il routing alla VM. Ad esempio, puoi utilizzare il comando
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22
per controllare il routing.
Se il tuo
VirtualMachineAccessRequest
mostra lo statofailed
, visualizza lo stato completo e rivedi il messaggio di errore che indica la causa del mancato completamento della richiesta:kubectl describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Sostituisci le variabili modificabili nel comando precedente con i tuoi valori.
Se lo stato di
VirtualMachineAccessRequest
è vuoto, l'ambiente guest potrebbe non essere in esecuzione.