Questo documento descrive come configurare le app per connettersi in modo programmatico 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 i processi di gestione del sistema.
Tutti i sample di codice utilizzati in questa guida sono ospitati sulla pagina GitHub GoogleCloudPlatform/python-docs-samples.
Prima di iniziare
- Configurare SSH per un account di servizio.
- Configura l'accesso al sistema operativo nel tuo progetto o in una VM in esecuzione come account di servizio.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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 l'account di servizio della VM e aggiunge la chiave pubblica all'account di servizio. - Chiama il
metodo
get_login_profile()
dalla libreria OS Login per ottenere il nome utente POSIX utilizzato dall'account di servizio. - Implementa un metodo
run_ssh()
per eseguire un comando SSH remoto. - Rimuovi i file delle chiavi SSH temporanee.
Connettiti alla VM che ospita l'app SSH.
Nella VM, installa
pip
e 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
argparse
per accettare le variabili dalla riga di comando. In questo esempio, chiedi all'app di installare ed eseguirecowsay
su 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 | || ||
- Scarica e visualizza il codice di esempio completo. Il campione 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 l'archiviazione delle chiavi SSH.
Configurare 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:
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 metodorun_ssh()
per eseguire un comando su un'istanza remota e restituire l'output del 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.Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-12-19 UTC.
-