VSCode SSH

From PNLUG
Revision as of 20:16, 13 March 2018 by Claudiodriussi (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Usare VSCode per l'editing di files remoti via SSH

Questa guida serve per gli utenti Linx che vogliono usare Visual Studio Code per fare l'editing di files presenti su macchine remote a cui si accede tramite il comando ssh. Alla fine abbiamo aggiunto qualche indicazione che dovrebbe permettere agli utenti Windows di fare le stesse cose.

Gli editor per programmatori

I programmatori si sa, sono sempre interessati ai programmi per l'editing di files di testo, e spesso ne usano più di uno in funzione dell'ambito di sviluppo che stanno utilizzando.

Tra gli editor evoluti "general purpose", segnalo Visual Studio Code di Microsoft https://code.visualstudio.com/Download che è OpenSource ed ultimamente sta avendo un notevole successo.

Cambiare editor è sempre faticoso perché si devono imparare i nuovi comandi e perché si cerca sempre di avere almeno tutte le cose che ci servono e che siamo abituati ad avere e possibilmente le deve fare in modo migliore.

Un altro motivo per cambiare editor o almeno per aggiungerne uno alla lista di quelli che già usiamo è la capacità di fornire nuove funzionalità.

Quella che illustro di seguito è una funzionalità che potrebbe spingere ad adottare VSCode come editor aggiuntivo o sostitutivo.

Editing di files remoti via SSH

Se utilizzate ssh per accedere a macchine remote, sapete che nella macchina remota avete a disposizione solo la riga di comando, quindi se dovete modificare files dovete utilizzare un editor con inerfaccia a carattere, in ambiente Linux ce ne sono diversi ad esempio nano, vi, emacs, ne, joe e molti altri. Alcuni sono semplici da usare, ad esempio nano altri sono potenti e ricchi di opzioni, ad esempio emacs.

Però per chi è abituato ad usare editors GUI evoluti, spesso è difficile adattarsi ad usare editor a carattere. La soluzione che propongo permette di usare VSCode della macchina locale per modificare i files della macchina remota.

Configurazione di VSCode per accedere ai files remoti

Ovviamente prima di tutto, se non lo abbiamo ancora fatto, dobbiamo installare VSCode https://code.visualstudio.com/Download.

VSCode è disponibile per Windows, Linux e Macintosh. In linux ci sono i pacchetti .deb e .rpm per le maggior distro, e per Ubuntu c'è anche la versione PPA che consente di tenere aggiornato il programma con i normali comandi di update.

Ora che abbiamo VSCode possiamo configurare l'editing remoto.

Passo 1: installare Remote VSCode

In VSCode premiamo la sequenza di tasti CTRL + SHIFT + X per aprire la lista delle estensioni e cerchiamo "Remote VSCode" https://marketplace.visualstudio.com/items?itemName=rafaelmaiolla.remote-vscode facciamo click sul pulsante installa e nel lato VSCode abbiamo finito.

In alternativa possiamo accedere al pannello dei comandi con CTRL + P e poi sulla riga di comando inserire "ext install remote-vscode"

Passo 2: configurazione della macchina locale

Apriamo un terminale nella nostra macchina e digitiamo:

 $ code ~/.ssh/config

così possiamo usare VSCode per editare il file di configurazione di ssh.

Ora possiamo decidere di abilitare l'editing remoto per una specifica macchina aggiungendo il seguente testo:

 Host MyRemoteHost
     HostName 12.345.678.90
     User root
     ForwardAgent yes
     RemoteForward 52698 127.0.0.1:52698


Oppure possiamo abilitare la funzionalità per tutte le macchine remote a patto che la macchina remota sia configurata nel modo che illustriamo in seguito.

 Host *
     ForwardAgent yes
     RemoteForward 52698 127.0.0.1:52698

La porta 52698 è quella di default, ma se desideriamo la possiamo cambiare configurando VSCode per usarne un altra. Per accedere al file di configurazione di VSCode si preme CTRL + , e si agguinge la riga ""remote.port": 52698,".

Sconsiglio di cambaiare porta se non abbiamo conflitti, perché questo comporta la necessità di modifcare anche la configurazione remota.

Passo 3: configurazione della macchina remota

Ora possiamo accedere alla nostra macchina remota ed ultimare la configurazione. Apriamo un terminale e digitiamo:

 $ ssh root@12.345.678.90

o comunque il comando che usiamo di solito per accedere alla macchina remota.

Nella macchina remota digitiamo:


 $ wget -O /usr/local/bin/rcode https://raw.github.com/aurora/rmate/master/rmate
 $ chmod a+x /usr/local/bin/rcode

Se siamo entrati nella macchina con un utente diverso da root, dovremo aggiungere "sudo" prima dei comandi.

Questo installa la versione bash dello script di agente remoto, ma ne esistono anche altri basati su Python, Ruby, Perl, Node ed altri, ma conviene usare questo perché bash è sempre disponibile mentre gli altri a volte non lo sono.

La configurazione è finita, non ci resta che uscire da ssh e rientrare per abilitare il nuovo comando.

Passo 4: editing remoto

Perché l'editing locale dei files remoti funzioni, prima di tutto è necessario avviare VSCode ed avviare il server per l'editing remoto che si ottiene premedo il tasto F1 che apre la finestra dei comandi e digitando "Remote: Start server" seguito da ENTER. Se abbiamo fatto tutti giusto, nella barra di stato di VSCode vedremo una icona che ci indica che il servizio di accesso remoto è attivo.

Se usiamo spesso VSCode come editor remoto via SSH, possiamo far partire automaticamente il server all avvio del programma. Per fare questo si deve modificare il file di configurazione che può essere raggiunto facendo click sulla icona di impostazioni in basso a sinistra e sceglindo "Impostazioni", oppure premendo la combinazione di tasti **CTRL ,**

Nel file di configurazione si aggiunge la riga:

 "remote.onstartup": true

e quando riavviamo il programma vediamo subito in basso a destra l'icona di Remote Server attivo.


Ora possiamo accedere alla nostra macchina remota con ssh ed abbiamo a disposizione il nuovo comando per l'editing locale, ad esempio:

 $ rcode ~/.bashrc

ci permette di modificare il file di configurazione di bash dell'utente corrente sulla macchina remota. Se in risposta al comando rcode otteniamo:

 connect_to 127.0.0.1 port 52698: failed.

significa che VSCode è chiuso o che ci siamo dimenticati di attivare il server.

Altrimenti nel nostro VSCode appare il file richiesto che possiamo modificare a piacimento e salvare nella macchina remota.

Un effetto non secondario dell'editing remoto, è che quando digitiamo il comando, il terminale remoto è nuovamente disponibile e questo significa che possiamo modificare più files contemporaneamente e che contestualmente riusciamo anche ad impartire comandi.

Piccola nota a margine: Se anche voi siete come me entusiasti utenti di Midnight Commander nella macchina remota potete lanciare mc con il comando:

 $ EDITOR=rcode mc

che vi permette di usare rcode come editor integrato in mc quando premete il tasto **F4** in corrispondenza di un testo. Se desiderate potete anche aggiungere una regola alias al file .bashrc per usare un comando più rapido da scrivere.

Utenti windows

Quanto detto finora vale quasi interamente anche per gli utenti Windows, con la sola differenza che essi solitamente accedono ad ssh utilizzando il programma Putty.

In Putty per configurare l'editing remoto si deve andare su: Connection -> SSH -> Tunnels, nel campo "Source Port" si inserisce 52698, nel campo "Destination" si scrive 127.0.0.1:52698, si scelgono i Radio Buttons "Remote" e "Auto" ed infine si preme "Add".

Note finali

Spero che questo breve tutorial via sia stato utile per facilitarvi il lavoro quando usate ssh.

By

Claudio Driussi