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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10 - SVILUPPO remoto con visual studio code spotlight

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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10 - autenticazione chiave ssh windows linux mac

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)

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10 - aggiornare ssh su windows spotlight

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:

  1. premi la combinazione da tastiera Win+R per richiamare Esegui
  2. impartisci services.msc

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

  1. scorri la lista fino ad individuare il servizio chiamato OpenSSH Authentication Agent
  2. facci doppio click sopra
  3. dal menu a tendina Tipo di avvio, scegli il valore Automatico. Questo farà sì che il servizio venga avviato automaticamente al boot
  4. clicca Applica

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10 - zShotVM_1724703854

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:

» Leggi: [guida] Come configurare la connessione SSH con tunnel, proxy e chiavi diverse: guida al file .ssh/config

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10 - come usare sshconfig

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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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"

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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:

» Leggi: [risolto] Git pull warning: L'esecuzione di un pull senza specificare come riconciliare branch divergenti non è consigliata

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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

Come usare Git chiave SSH PC locale Visual Studio Code Remote Development Windows 11 Windows 10

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)!