Site icon Tosolini.info

Visual Studio Code Remote develpment SSH

Ad inizio di giugno 2019 Microsoft rende disponibile in versione stabile una particolare estensione per Visual Studio Code che permette di collegarsi ad un server, un container Docker o una virtual machine WSL ed utilizzare il codice contenuto come fosse in locale. Praticamente un sogno che si avvera.

In realtà quanto descritto sopra non è tutto in una estensione, ma bensì in tre distinte estensioni. Oggi parleremo qui solo della prima, ovvero quella che permette di collegarsi via SSH ad un server Linux ed utilizzare una cartella al suo interno, chiaramente di un progetto che può essere PHP, Python o Node JS per citare i più noti, ed utilizzarlo come se il materiale fosse nel nostro filesystem locale, senza per altro avere l’annoso problema di copiare i files in remoto.

Per arrivare a questo risultato, oltre chiaramente ad avere Visual Studio Code e la relativa estensione, anche un cliente compatibile OpenSSH. Nel caso di Linux e MacOS è quanto mai facile visto che lo stesso è integrato nel sistema e il comando ssh è già integrato nella path di sistema.

Nel caso di Windows le cose sono più complicate, o quasi. Nel senso che se abbiamo una delle ultime versioni del sistema operativo, tra le varie opzioni è possibile installare un client OpenSSH nativo per Windows. Viceversa per chi ha una versione di Windows datata, deve affidarsi al buon vecchio PuttY e abilitare ssh tramite l’eseguibile plink.exe.

Passato questo pre-requisito ve ne sarebbe un altro, di fatto direi mandatorio, ovvero tutta la catena funziona in modo egregio se il server a cui ci colleghiamo utilizza una coppia di chiavi private/pubbliche al posto della password. Cosa per altro che consiglio vivamente per questioni di praticità e sicurezza.

Il “vecchio” sistema funziona solo che da quanto ho potuto provare la richiesta di immettere la password viene proposta più volte molto probabilmente, anzi sicuramente, perché l’estensione apre in parallelo più sessioni contemporanee. Per altro proprio lo stesso Windows, oltre al client SSH nativo, si porta dietro anche la possibilità di generare delle coppie di chiavi totalmente RSA2 compatibili poiché il software di fatto è lo stesso. Quindi poter esportare le chiavi pubbliche sul server diventa estremamente più semplice che non utilizzare Putty Agent.

Entrando nel pratico, una volta installata e attivata l’estensione Remote SSH, sulla sinistra avremo una nuova sezione, una volta cliccato avremo a disposizione l’area per dichiarare gli host, visto che i progetti potrebbero essere molteplici. Il file che conterrà queste informazioni è messo nella cartella .ssh nella Home dell’utente, è comunque possibile scegliere altre path, ma lo sconsiglio. Una volta avuto accesso al file, solitamente si chiama config, dovremo indicare come in questo esempio che faccio, l’host e vari parametri:

Host server-or-ip
   User username
   AddKeysToAgent yes
   UseKeychain yes  
   IdentityFile ~/.ssh/id_rsa
   ControlMaster auto
   HostName dns-hostname
   LocalCommand cd /path/to/my/project

Come si può notare da IdentityFile stiamo utilizzando l’autenticazione dichiarata di User con le chiavi pubbliche/private. ControlMaster fa in modo di utilizzare le credenziali inserendole una volta sola, nel caso della password dovrebbe venire comodo, ma come dicevo a me non ha funzionato. Infine LocalCommand dovrebbe fornire il comando posto al seguito, come spostarsi in una directory, ma anche questo al momento non ha portato risultati ora funziona perfettamente.

Una volta collegati si aprirà una seconda sessione di Visual Studio, dove la sezione relativa ai file ci permetterà di navigare all’interno del server remoto, e il terminale se attivato sarà quello del server e non della nostra macchina.

E’ anche interessante notare che alcune estensioni (ad esempio node o pyhton) andranno ad installare del software nella cartella .vscode all’interno della cartella Home dell’utente utilizzato. Questo permette di utilizzare l’editor con le piene funzionalità, anche quelle di terze parti.

Cito solo per conoscenza la possibilità di connettersi attraverso un proxy ssh, questo ci viene utile ad esempio quando il server remoto è ancora “chiuso” dal firewall ma noi dobbiamo testare gli applicativi al loro interno. Con il comando LocalForward possiamo “prelevare” una porta di servizio del Server Linux e attraverso SSH mapparla al nostro localhost e quindi di fatto poter vedere e testare. Di seguito un esempio:

Host remote-linux-machine
    User myuser
    HostName remote-linux-machine.mydomain
    LocalForward 127.0.0.1:3000 127.0.0.1:3000
    LocalForward 127.0.0.1:27017 127.0.0.1:27017

dove abbiamo “mappato” le porte 3000 e 27017 remote con le nostre locali, in questo caso basterà puntare il browser a localhost:3000 per vedere il risultato finale.

Conclusioni

Un passo in avanti notevole che stacca definitivamente Visual Studio Code dalla concorrenza. Per altro software simili quasi sempre sono a pagamento, se si esclude quelli a linea di comando, per cui avere gratuitamente questa possibilità è davvero notevole.

Più avanti avrò modo di parlare dell’estensione gemella che permette di “entrare” dentro un Container Docker, anche in questo caso saltando un sacco di problemi che si avrebbe normalmente.

Exit mobile version