Come molti di voi sapranno, non è possibile collegarsi in SSH a una VM su GCP attraverso un client SSH, a meno che non abbiate prima creato delle chiavi. Una VM su GCP infatti, appena creata, permette il solo accesso in SSH tramite browser web, attraverso la console di GCP.
In questo articolo illustreremo come Collegarsi in SSH a una VM su GCP tramite chiavi SSH, da utilizzare su un client SSH, come Putty o SecureCRT (ovviamente ne esistono molti altri ma la procedura è sempre la stessa), o direttamente dal vostro terminale (o console), anziché usare il classico browser web, per collegarsi a una virtual machine su compute Engine di GCP. I contenuti sono semplici e non serve una certificazione Google Cloud per poter capire e affrontare i contenuti.
Indice dei contenuti
- Creiamo una coppia di chiavi (pubblica e privata)
- Carichiamo la chiave pubblica sulla console di GCP
- Configuriamo il nostro client
Collegarsi in SSH a una VM su GCP tramite chiavi SSH – Creiamo una coppia di chiavi (pubblica e privata)
Prima di tutto, dobbiamo premettere il fatto che, per funzionare, una connessione tramite SSH prevede uno scambio di chiavi, una pubblica da caricare sulla console GCP e una privata da istallare sul client SSH che andremo a usare.
Vediamo ora nel dettaglio come creare questa benedetta coppia di chiavi 🙂 .
Apriamo il nostro terminale e lanciamo quindi il comando:
ssh-keygen -t rsa -C myusername
ShellScriptDove myusername va sostituito con l’utente presente sulla vostra VM. L’utente potete trovarlo accedendo in SSH via web alla macchina. Dopo l’accesso vi apparirà una cosa simile a USERNAME@nomemacchina.
Dopo aver lanciato il comando, ci verrà chiesto di scegliere il nome del file ed eventualmente, qualora lo volessimo, potremo decidere di impostare una password a protezione della nostra chiave privata.
A questo punto, a meno che non avremo scelto nomi diversi, il comando creerà 2 file:
- id_rsa
- id_rsa.pub
id_rsa sarà la vostra chiave privata
id_rsa.pub è invece la vostra chiave pubblica che avrà un formato a qualcosa di mile a:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDE5UQTLKX/ZTXXeoZu8i0kIYrvvRuO7RmVb6cJ/T3lNK2AkJ5MceHemcPdg84PcpMupBWLAX/OBJksvdPhz7dUKwFr/mGyDBFCcv3dvjUa0X3uCTt9UK5kgdzi5X/jEryW9B2w35MDI+/e27xmW59Yt+nNg79WePF8ZydcFfAUTU57kKRoAcqpAk6Jurm5bckBd1/ZKbgh02IQYr2XctwraEolDmzvfoUJeYB+MUbF4ldxnzM60xAq3TgUeuLqKAMpO7gnBTz5S+NwfH0+XDnscprG3XJA3qh4AKnGu5o8nIhBsk7VvJkYuFmK6LMCDQiH2cVq3IYV9Lt3sTOQcfbYiUMd7A90EJrFfRK0lbcVcPElYf8yPTpF7hPExUx2ZTKZqaG8GuEuB0BqR879qh3/ObAQTBWPYq2LlIyHj7lfm+7lBuk6idecdCe1qIF9fzgbSIFs+gBudTwbw15Ok2Nrzl4iYJoqjbEOTVA++S5qR2nQgmolO1K6IThWJT0GZcU= fabioiegri
ShellScriptQualora stiate utilizzando un terminale linux, le vostre chiavi verranno posizionate nella cartella .ssh all’interno della vostra home directory.
In alternative, qualora stiate utilizzando un client Windows, potete scaricare Putty e utilizzare la funzionalità Putty Key Generator.
Putty Key Generator altro non è che un’interfaccia grafica per la creazione della coppia di chiavi, che va a sostituire i comandi inviati a riga di comando sulla console.
Come potete vedere dal testo evidenziato in giallo, anche la console ci permette di scegliere sia lo username che un’eventuale password a protezione della chiave.
Carichiamo la chiave pubblica sulla console di GCP
Ora che abbiamo la nostra coppia di chiavi, “dobbiamo dire” alla nostra VM su GCP che può accettare le chiamate in ingresso in SSH dai client che si presentano con la nostra chiave (quella appena creata).
Accediamo alla console di GCP dedicata a Compute Engine e selezioniamo la VM a cui vogliamo accedere.
Per questo esempio ho creato una VM di test chiamata semplicemente web. Clicchiamo sul nome che abbiamo scelto.
Scegliamo la VM:
Clicchiamo sul pulsante EDIT per andare a modificare la configurazione:
Una volta aperta la finestra di editing, andiamo nella sezione Security and access dove troveremo la sezione dedicata alle SSH keys. Quindi andiamo ad aggiungere la nostra chiave pubblica.
Non dovremo fare altro che incollare il contenuto del file id_rsa.pub creato precedentemente.
Attenzione, la chiave pubblica deve essere incollata in una sola riga.
Ora non ci resta da fare altro che configurare il nostro client.
Configurazione client per accedere in SSH alla VM su GCP
A questo punto non ci resta che configurare il nostro client
Client Linux / MacOS
Nel nostro client Linux o MacOS, andiamo nella cartella .ssh della nostra home directory e creiamo, se non esiste già, il config e scriviamo una cosa simile (qualche riga più in basso vi spiegherò ogni singola riga) a
Host aliasdelnostroweb
HostName IP.pubblico.del.server
Port 22
User myusername
PubKeyAuthentication yes
IdentityFile /Users/fabioiegri/.ssh/my_id_rsa.key
ShellScriptLe parti in grassetto dovranno essere modificate.
- Host -> Scrivete un alias per il nostro server. Io, per esempio, ho scritto web
- Hostname -> qui va inserito l’IP pubblico del server. Lo trovate nella pagina Compute Engine di GCP
- Port -> 22 è la porta a cui risponde il servizio SSH
- User -> inserite lo username utilizzato quando avete credo la chiate (ultima parola del comando ssh-keygen)
- PubKeyAuthentication yes -> Questa riga non va modificata
- IdentityFile -> è il path della vostra chiave privata.
- Su Linux potrebbe essere: /home/USERNAME/.ssh/id_rsa
- Lu MacOS: /Users/USERNAME/.ssh/id_rsa
Facciamo conto che abbiate creato il vostro config file in questa modalità:
Host <strong>myserver</strong>
HostName <strong>200.200.200.200</strong>
Port 22
User <strong>fabio</strong>
PubKeyAuthentication yes
IdentityFile /<strong>Users/fabio/.ssh/my_id_rsa.key</strong>
ShellScriptPer collegarci alla macchina, sarà sufficiente lanciare il comando:
ssh fabio@myserver
ShellScriptA questo punto potremmo creare un alias del tipo:
alias <strong>sshserver</strong> ='ssh fabio@myserver'
ShellScriptE per collegarci alla macchina sarà sufficiente scrivere nel nostro terminale: sshserver
Client Windows
Per la configurazione su Windows, vi lancio un interessante e chiarissimo tutorial presente su YouTube:
Qui vi mostriamo, oltre che come creare la coppia di chiavi, anche come inserirle in Putty.
Ovviamente, le chiavi create andranno comunque caricate sulla console di Compute Engine di GCP.
Spero che il piccolo tutorial vi sia d’aiuto.
Se avete dei dubbi commentate pure. Sarà felice di rispondervi.
Se volete mettervi in contatto con me, vi lascio la mia pagina di LinkedIn.
Buon lavoro.
Principal Web Solutions Architect – Technology & Architecture Manager @ Accenture – Google Cloud Certified – Professional Cloud Architect
Parla di #web, #cloud, #websecurity, #webperformance e #webarchitecture