La funzione "Sviluppo remoto" (Remote development) di Visual Studio Code è davvero molto comoda. L'unico aspetto che non gestisce correttamente è l'autenticazione su Git tramite "chiave SSH", necessaria per effettuare push e pull dai repository git@
. Certo, per aggirare il limite basta copiare la chiave SSH sulla stessa macchina sulla quale risiede il codice, ma si tratta di una soluzione sub-ottimale, molto rischiosa dal punto di vista security. No: quello che vorremmo veramente è la possibilità di eseguire push e pull con Git utilizzando la chiave SSH locale, custodita al sicuro sullo stesso PC dal quale stiamo lavorando tramite Visual Studio Code. Ebbene: è necessario un minimo di configurazione, ma è assolutamente possibile. Vediamo dunque come usare Git con la chiave SSH del PC locale con Visual Studio Code Remote Development.
Ho testato la procedura su Windows 11 e Windows 10. Di più: la utilizzo quotidianamente per sviluppare proprio TurboLab.it!
Prima di cominciare, è bene chiarire che, nella presente guida, vedremo nello specifico come usare la chiave SSH locale per lavorare con Git da Visual Studio Code in modalità "Sviluppo Remoto". Prima di proseguire, assicurati di aver configurato Visual Studio Code per lo sviluppo remoto come mostrato in quest'altro articolo:
» Leggi: Guida Definitiva allo sviluppo remoto con Visual Studio Code via SSH
Ti servirà una "chiave SSH". Se ancora non l'hai, puoi crearla seguendo questa semplice procedura:
» Leggi: [guida] Come creare una chiave SSH da PC Windows, Linux, Mac e accedere ai server senza password
Devi anche conoscere il percorso su disco nel quale è salvato il file che contiene la tua chiave. Il file generalmente si chiama id_rsa
, e risiede all'interno della tua home, nella sotto-cartella di nome .ssh
. Nel mio caso, ad esempio, sta in C:\Users\zane\.ssh\.id_rsa
(dove zane
è lo username del mio account Windows)
Git via SSH con Visual Studio Code, Passo 1: Aggiornare il client SSH di Windows
La prima, PRIMISSIMA!, cosa da fare è aggiornare il client SSH in dotazione a Windows. È imperativo avere la versione denominata OpenSSH_for_Windows_9.5p1
o successive, in quanto le precedenti sono interessate da un bug che impedisce il corretto funzionamento del sistema.
Per verificare quale versione di SSH sia in uso ed, eventualmente, aggiornare, vedi questo approfondimento dedicato:
» Leggi: Come aggiornare SSH client o server su Windows 11 e Windows 10 (OpenSSH 9)
Git via SSH con Visual Studio Code, Passo 2: Modificare il tipo di avvio di OpenSSH Authentication Agent
Devi ora verificare che il servizio di nome OpenSSH Authentication Agent sia avviato e che sarà poi avviato automaticamente insieme a Windows:
- premi la combinazione da tastiera
Win+R
per richiamareEsegui
- impartisci
services.msc
- scorri la lista fino ad individuare il servizio chiamato
OpenSSH Authentication Agent
- facci doppio click sopra
- dal menu a tendina
Tipo di avvio
, scegli il valoreAutomatico
. Questo farà sì che il servizio venga avviato automaticamente al boot - clicca
Applica
Presta ora attenzione alla sezione sottostante. Se il servizio non è attualmente in esecuzione, clicca sul pulsante Avvia
per avviarlo immediatamente.
Sebbene non sia strettamente necessario, ti consiglio caldamente di riavviare subito il PC, tornare qui e verificare che il servizio sia stato effettivamente avviato automaticamente come ci aspettiamo.
Git via SSH con Visual Studio Code, Passo 3: Aggiungere la chiave all'agent SSH locale
Apri ora il Terminale (Windows 11) oppure il Prompt dei comandi (Windows 10) e impartisci:
ssh-add -l
Questo fa sì che vengano mostrate le chiavi SSH note al servizio OpenSSH Authentication Agent, ovvero quelle che potranno poi essere utilizzate per l'autenticazione su Git. Se non hai ancora configurato nulla, riceverai l'errore The agent has no identities
: significa che il servizio non conosce nessuna chiave.
Quello che devi fare è impartire un comando simile al seguente:
ssh-add "C:\Users\zane\.ssh\.id_rsa"
Dove:
ssh-add
: è il nome del comando"C:\Users\zane\.ssh\.id_rsa"
: è il percorso al file che contiene la tua chiave privata. Devi chiaramente sostituire questo esempio con il percorso reale del file sul tuo PC. Conserva le virgolette, di modo da gestire anche eventuali spazi presenti nel percorso
Il comando eseguito con successo non mostra alcun output ma, impartendo nuovamente ssh-add -l
, ora troverai l'identificativo della chiave appena aggiunta
In caso disponessi di molteplici chiavi e desiderassi usarle tutte (magari perché hai autorizzato chiavi diverse per accedere a repository diversi), ti basterà aggiungerle tutte ripetendo il comando ssh-add
seguito dal percorso del file.
In tutti i casi, fai la massima attenzione a specificare il file che contiene la tua chiave privata, generalmente chiamato solamente id_rsa
(file senza estensione) e NON il file id_rsa.pub
, che contiene la chiave pubblica, e non funzionerebbe.
Git via SSH con Visual Studio Code, Passo 4: Aggiungere ForwardAgent yes
Devi ora far sì che la il servizio OpenSSH Authentication Agent renda disponibile la chiave appena aggiunta al sistema al quale ti connetti tramite Visual Studio per lo sviluppo remoto.
Allo scopo, apri in modifica il file .ssh/config
, come spiegato qui:
Aggiungi quindi questa direttiva al "profilo di connessione" del sistema al sistema al quale ti connetti tramite Visual Studio per lo sviluppo remoto:
ForwardAgent yes
Ad esempio: il profilo di esempio proposto durante la configurazione di Visual Studio Code diventerà:
Host mioserver
HostName mioserver.com
Port 22
User mioUsernameSsh
StrictHostKeyChecking no
ForwardAgent yes
Ho dunque semplicemente aggiunto l'ultima riga.
Git via SSH con Visual Studio Code, Passo 5: Verificare che la chiave locale sia accessibile dal sistema remoto
Avvia ora Visual Studio Code come fai di solito per sviluppare sul sistema remoto. Clicca quindi la voce di menu Terminale -> Nuovo terminale
di modo da poter impartire il "solito" comando ssh-add -l
, ma questa volta sul sistema remoto.
L'output del comando dovrebbe mostrarti le stesse, identiche chiavi che visualizzi quando impartisci ssh-add -l
sul tuo PC locale
Se è così, il sistema sta funzionando come ci aspettiamo! Il più è fatto, siamo a pochi passi dal traguardo!
Git via SSH con Visual Studio Code, Passo 6: Installare Git sul sistema remoto
Il comando git
deve essere installato sul sistema remoto. Allo scopo, puoi usare il gestore di pacchetti della tua distribuzione. Se il sistema al quale sei connesso monta Ubuntu, ad esempio, ti basta lanciare:
sudo apt update && sudo apt install git -y
Il comando, ovviamente, va eseguito sul sistema remoto, tramite il Terminale di Visual Studio Code, e non sul PC locale
Git via SSH con Visual Studio Code, Passo 7: Configurazione minimale di Git sul sistema remoto
Assicurati ora di configurare il tuo nome e la tua email in Git. Queste informazioni non verranno usate per l'autenticazione, ma servono a "firmare" i vari commit, e saranno mostrate nello storico delle modifiche per identificare l'autore.
I comandi da impartire sono:
git config --global user.name "MioNome"
git config --global user.email info@example.com
I dati immessi vengono salvati sul sistema remoto, all'interno di un file specifico nella tua home. Per visualizzare tale file, lancia:
cat "$HOME/.gitconfig"
Dovresti anche indicare subito se le operazioni di pull devono svolgere un tradizionale "merge" oppure un "rebase". Io preferisco di gran lunga la prima, che è più sicura. Ma effettivamente ha l'effetto negativo di "sporcare" lo storico di Git del progetto con qualche operazione di commit in più.
Se concordi con me e anche tu preferisci che il pull svolga un merge e non un rebase, puoi lanciare questo comando:
git config --global pull.rebase false
Se vuoi saperne di più, consulta quest'altro approfondimento specifico:
Git via SSH con Visual Studio Code, Passo8: Clonare il repository tramite l'"URL Git SSH" (git@..)
Se ancora non l'hai fatto, devi mettere a disposizione i file sorgenti che costituiscono la tua applicazione al sistema al quale sei connesso tramite Visual Studio Code per lo sviluppo remoto.
Un modo molto rapido per raggiungere il risultato è di clonare il repository via Git. Puoi utilizzare i comandi grafici di Visual Studio Code, oppure selezionare la voce di menu Terminale -> Nuovo Terminale
e impartire qualcosa di simile a:
git clone git@github.com:TurboLabIt/TurboLab.it.git
Chiaramente devi avere l'accortezza di sostituire l'URL indicato con quello del tuo progetto.
Nello svolgere l'operazione di clonazione, assicurati di usare l'"URL Git SSH", che generalmente inizia con git@
, e non l'"URL HTTPS" che ha un aspetto simile a https://github.com/TurboLabIt/TurboLab.it.git
. Nel secondo caso, infatti, la chiave SSH verrebbe ignorata e, probabilmente, non riusciresti ad accedere al repository nonostante la configurazione svolta sin qui
Conclusioni
Se la configurazione va a buon fine... complimenti, è tutto funzionante! Ora puoi eseguire pull, commit e, se i privilegi sono adeguati, anche contribuire codice al progetto che hai clonato tramite push.... il tutto utilizzando la chiave SSH del tuo PC locale.
Buono sviluppo (remoto)!