Questo documento descrive come configurare le app per eseguire una connessione programmatica tra due istanze di macchine virtuali (VM) utilizzando SSH e OS Login. L'attivazione dell'utilizzo di SSH da parte delle app può essere utile per automatizzare le procedure di gestione del sistema.
Tutti gli esempi di codice utilizzati in questa guida sono ospitati sulla pagina GitHub GoogleCloudPlatform/python-docs-samples.
Prima di iniziare
- Configura SSH per un service account.
- Configura OS Login nel tuo progetto o in una VM in esecuzione come account di servizio.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:
Console
Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
Configura un'app SSH
Configura l'app per gestire le chiavi SSH e avviare connessioni SSH alle VM Compute Engine. In linea generale, l'app deve:
- Importa la libreria Google OS Login per creare librerie client che ti consentano di autenticarti con l'API OS Login.
- Inizializza l'oggetto OS Login Client per consentire alla tua app di utilizzare OS Login.
- Implementa un metodo
create_ssh_key()che genera una chiave SSH per il service account della VM e aggiunge la chiave pubblica al service account. - Richiama il
metodo
get_login_profile()dalla libreria OS Login per ottenere il nome utente POSIX utilizzato dal service account. - Implementa un metodo
run_ssh()per eseguire un comando SSH remoto. - Rimuovi i file delle chiavi SSH temporanee.
App SSH di esempio
L'app di esempio oslogin_service_account_ssh.py mostra una possibile implementazione
di un'app SSH. In questo esempio, l'app utilizza il metodo run_ssh()
per eseguire un comando su un'istanza remota e restituire l'output comando.
Esegui l'app SSH
Dopo aver creato un'app che utilizza SSH, puoi eseguirla seguendo una procedura simile
a quella dell'esempio seguente, che installa ed esegue
l'app di esempio oslogin_service_account_ssh.py. Le librerie che installi possono variare,
a seconda del linguaggio di programmazione utilizzato dall'app.
In alternativa, puoi scrivere un'app che importa oslogin_service_account_ssh.py e
lo esegue direttamente.
Connettiti alla VM che ospita l'app SSH.
Nella VM, installa
pipe la libreria client Python 3:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
(Facoltativo) Se utilizzi l'app di esempio
oslogin_service_account_ssh.py, scaricala da GoogleCloudPlatform/python-docs-samples:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
Esegui l'app SSH. L'app di esempio utilizza
argparseper accettare le variabili dalla riga di comando. In questo esempio, chiedi all'app di installare ed eseguirecowsaysu un'altra VM del progetto.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto della VM a cui si connette l'app.VM_NAME: il nome della VM a cui si connette l'app.ZONE: la zona della VM a cui si connette l'app.
L'output è simile al seguente:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Passaggi successivi
- Scarica e visualizza l'esempio di codice completo. L'esempio completo include un piccolo esempio di utilizzo di tutti questi metodi insieme. Non esitare a scaricarlo, modificarlo ed eseguirlo in base alle tue esigenze.
- Scopri di più su come funzionano le connessioni SSH in Compute Engine, inclusa la configurazione e lo spazio di archiviazione delle chiavi SSH.