Questo documento descrive come configurare le app per connettersi in modo programmatico tra due istanze di macchine virtuali (VM) utilizzando SSH e OS Login. Attivazione delle app l'uso di SSH 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 OS Login sul tuo o su una VM eseguita come account di servizio.
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.
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.
-
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:
- 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.
App SSH di esempio
L'app di esempio oslogin_service_account_ssh.py
dimostra 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 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
, scarica 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 appartiene l'app a cui connetterti.ZONE
: la zona della VM a cui è connessa l'app a.
L'output è simile al seguente:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Passaggi successivi
- Scarica e visualizza il codice di esempio completo. L'esempio completo include un piccolo esempio di utilizzo di tutti questi metodi in sinergia. Puoi scaricarlo, modificarlo ed eseguirlo in base alle tue esigenze.
- Scopri di più su come funzionano le connessioni SSH in Compute Engine, incluse la configurazione e l'archiviazione delle chiavi SSH.