Se hai appena acquistato il tuo VPS (Virtual Private Server) oppure devi accedere a un'istanza cloud su Amazon (AWS), Microsoft Azure o a un altro server remoto fornito dalla tua azienda o dall'università, hai probabilmente bisogno di utilizzare SSH (Secure Shell): uno strumento che ti consente di impartire comandi a un altro sistema connesso in rete tramite il tuo tradizionale PC. Ebbene: questa è la Guida Definitiva a SSH con Window, Linux o Mac, nella quale vedremo proprio come usare SSH con facilità

Ma... che cos'è SSH? Il modo più semplice per spiegarlo è tramite un'analogia. Hai presente i programmi come Desktop Remoto oppure TeamViewer, che ti consentono di controllare un altro PC da lontano? Ebbene: allo stesso modo, SSH ti permette di lavorare su un sistema da remoto, con l'unica differenza che funziona da linea di comando, e non tramite interfaccia grafica.

» Leggi anche: Come controllare un PC Windows da lontano: guida a Supremo

Ne deriva che, dopo aver eseguito login da remoto sul sistema che vogliamo controllare, possiamo impartire comandi da terminale ed eseguirli sul sistema remoto, e non in locale

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - guida ssh spotlight

Vediamo un esempio nell'immagine seguente: attualmente mi trovo a casa a Ferrara e, dal mio PC con Windows 10, mi sono collegato in SSH al server che eroga il sito TurboLab.it, che si trova in un datacenter a Milano e monta Linux (Ubuntu). Una volta "dentro", ho impartito il comando lsb_release -a per visualizzare i dettagli del sistema operativo in uso

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - zShot_161079266811

SSH viene impiegato soprattutto per controllare "server" (nel senso di "sistemi che erogano servizi") e non tanto PC desktop, ma la sostanza non cambia. Inoltre: generalmente ci si collega a server Linux, ma anche Windows supporta SSH in modo analogo.

Guida SSH: cosa serve, cosa si può fare

Per usare SSH abbiamo bisogno di alcuni elementi:

  • un PC dotato di Windows, Linux o Mac
  • un computer remoto al quale collegarci - può essere un VPS, un server cloud, un Raspberry Pi o una macchina virtuale
  • l'indirizzo IP (ad esempio: 95.141.36.145) oppure il nome a dominio (es: turbolab.it) del sistema remoto al quale vogliamo collegarci
  • le credenziali (nome utente e password, oppure una "chiave") che ci autorizzino ad accedere al computer remoto in questione

Una volta "dentro", sarà come se avessimo fisicamente collegato la tastiera e lo schermo al computer remoto.

SSH è completamente crittografato e sicuro: tutte le password, i comandi inviati e le risposte mostrate a terminale sono visibili solo sul nostro PC e sul server al quale siamo connessi, persino se stiamo utilizzando una connessione Wi-Fi pubblica e senza alcuna protezione. Chiunque riuscisse ad intercettare le informazioni scambiate si ritroverebbe con lunghe stringhe di dati cifrati e senza senso.

Alcune note per gli utenti Windows

  1. Il comando ssh che utilizzeremo fra poco è integrato nativamente su Windows 10 1709 (vecchia versione di settembre 2017) e successive, comprese tutte le build di Windows 11
  2. In ogni caso, potrebbe essere utile aggiornare SSH all'ultima versione disponibile (l'update non è sempre automatico)
  3. Chi utilizzasse ancora Windows 8 oppure Windows 7 deve ripiegare su un programma di terze parti, come PuTTY

Guida SSH, Passo 1: Aprire il Terminale

Iniziamo dunque aprendo il Terminale:

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - windows terminal command prompt

Guida SSH, Passo 2: La sintassi del comando SSH

A questo punto siamo già pronti ad avviare la connessione SSH tramite un comando simile a questo:

ssh nomeUtente@server.com

Dove:

  • ssh: è il nome del comando
  • nomeUtente: è lo username con il quale eseguire login al server remoto
  • server.com: è l'indirizzo IP (ad esempio: 95.141.36.145) oppure il nome a dominio (es: turbolab.it) del computer remoto al quale desideriamo connetterci

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Attenzione! Il nome utente da digitare deve essere quello di un account valido e preventivamente creato sul server remoto, e potrebbe essere diverso da quello in uso sul PC locale!

Guida SSH, Passo 3: Attendere la risposta

Non appena impartito il comando, dovremo attendere la risposta del computer remoto. Se, dopo alcuni secondi di attesa, ancora non succede nulla, significa che il server al quale stiamo tentando di collegarci non risponde. Dobbiamo dunque diagnosticare il problema seguendo quest'altra guida:

» Leggi: "Impossibile connettersi al computer remoto": cosa fare quando i nostri servizi non rispondono ai client

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Guida SSH, Passo 4: Accettare la chiave

Quando ci colleghiamo ad un determinato server tramite SSH per la primissima volta, il nostro PC non ha modo di verificare la sua identità. Di conseguenza, mostra un messaggio di avviso simile a questo:

The authenticity of host 'server.com (192.168.0.42)' can't be established.

ECDSA key fingerprint is SHA256:MG...bGcI.

Are you sure you want to continue connecting (yes/no)?

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Quello che fanno TUTTI nella quotidianità è digitare yes e battere Invio senza tante preoccupazioni, di modo da procedere. Il nostro PC salverà così l'identità digitale ricevuta, associandola al server al quale stiamo tentando di accedere. In futuro, quando ci ri-connetteremo a questo stesso server, l'avviso non verrà più mostrato.

In vero, quello che bisognerebbe fare è verificare puntualmente l'identità del sistema al quale ci stiamo connettendo.

Come minimo, diamo un'occhiata all'indirizzo IP mostrato nella risposta e verifichiamo che sia conforme a quello che ci aspettiamo: nello screenshot precedente, ad esempio, si nota che l'indirizzo IP mostrato (192.168.0.42) non è quello del dominio turbolab.it: questo è un campanello d'allarme (ad intensità vuvuzela!) che qualcosa non va, e il server al quale ci stiamo per connettere non è quello che ci aspettiamo.

Chi voglia essere ancora più professionale, e avere l'assoluta certezza che il server al quale stiamo per connetterci sia realmente quello che ci aspettiamo, deve confrontare l'identità digitale mostrata a schermo (la stringa simile a SHA256:MG...bGcI) con quella materialmente usata dal server remoto. L'operazione non è banale, dato che ancora non siamo "dentro": se disponiamo di un accesso al server tramite un altro canale (l'interfaccia web del provider che ci fornisce il VPS, ad esempio), possiamo visualizzare questa informazione impartendo questo comando sul server:

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub

Chi invece stesse utilizzando un server gestito da altri e non disponga di altri tipi di accesso, vorrà comunicare la stringa simile a SHA256:MG...bGcI, visualizzata a schermo, al sistemista che gestisce il server remoto, e chiedere conferma

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

A questo punto, non dobbiamo far altro se non confrontare la stringa che inizia con SHA256: qui visualizzata con quella che abbiamo ricevuto in risposta al tentativo di connessione via SSH, ed assicurarci che siano identiche.

Guida SSH, Passo 5: Digitare la password

A questo punto, il server remoto potrebbe "buttarci fuori" mostrando l'avviso Permission denied (publickey). In tal caso, significa che non possiamo accedere tramite username e password perché il server è configurato di modo da consentire l'accesso solo a chi possieda una particolare chiave (ne parleremo in seguito). Così fosse, passiamo direttamente a quest'altro approfondimento:

» Leggi: [guida] Come creare una chiave SSH da PC Windows, Linux, Mac e accedere ai server senza password

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Nella maggior parte dei casi, invece, ci verrà chiesto proprio di digitare la password associata al nome utente che abbiamo specificato sulla linea di comando quando ci siamo connessi tramite ssh nomeUtente@.... Digitiamo allora tale password, senza preoccuparci del fatto che il terminale non mostri nulla mentre premiamo le lettere (è normale che sia così). Al termine, premiamo Invio

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Attenzione! Anche qui, notiamo che la password è quella associata all'account sul server remoto. Non c'entra assolutamente niente con quella locale, utilizzata per accedere al PC!

Se username e password corrispondono, avremo accesso al server. Il sistema remoto mostra un messaggio di benvenuto e alcune informazioni sul sistema operativo, poi ci offre il prompt per digitare i comandi

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Complimenti, siamo "dentro"!

Guida SSH, Passo 6: Lavorare in SSH

A questo punto possiamo impartire comandi al server remoto. Fra i principali, ricordiamo:

  • ls -la: mostra la lista di file e cartelle
  • pwd: mostra il percorso della cartella nella quale ci troviamo
  • cd /var/log/: entra nella cartella indicata
  • cd $HOME: torna alla cartella personale ("home")
  • mkdir MiaNuovaCartella: crea una cartella
  • sudo -s: ottiene i privilegi di amministratore (root)
  • nano /percorso/file.txt: apre il file nell'editor di testo
  • cp /var/log/nginx/access.log $HOME/: copia il file specificato nella seconda cartella
  • mv $HOME/note.txt $HOME/appunti.txt: sposta o rinomina un file
  • bash $HOME/script/mioscript.sh: esegue lo script specificato
  • exit (oppure Ctrl+D da tastiera): chiude la connessione sistema remoto

Segnalo inoltre i seguenti approfondimenti:

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Per la lista completa di guide e tutorial:

» Guarda: tag "Linea di comando"

Guida SSH, Passo 7: Accedere tramite una "chiave SSH"

Oltre all'autenticazione tramite nome utente e password, SSH supporta l'uso di una chiave asimmetrica: adottando questa modalità, l'utente non deve più digitare la propria password come visto al Passo precedente, ma si identifica tramite un file segreto che contiene una chiave crittografica. Abbiamo visto come configurare tutto in quest'altro approfondimento dedicato:

» Leggi: [guida] Come creare una chiave SSH e accedere ai server senza password da PC Windows, Linux, Mac

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - autenticazione chiave ssh windows linux mac

Guida SSH, Passo 8: Trasferire i file via SSH

Oltre ad impartire comandi, SSH può essere sfruttato anche per copiare file dal PC locale al server remoto, e viceversa. Allo scopo, si utilizza il comando scp, che poggia su SSH per trasferire tutto in modo crittografato e sicuro. Per la guida completa, si rimanda a questi approfondimenti:

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - scp ubuntu spotlight

Guida SSH, Passo 9: Creare un tunnel SSH

Un altro uso avanzato di SSH prevede la creazione di un cosiddetto tunnel SSH: una connessione sicura fra PC locale e server remoto all'interno della quale è possibile scambiare dati in modo crittografato e, quindi, anche superare i blocchi eventualmente attivati dagli amministratori di sistema

» Leggi: Come fare un tunnel SSH da Windows 10

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video)

Guida SSH, Passo 10: Più veloci, con la "rubrica" di sshconfig

Il funzionamento base di SSH è molto semplice: ssh nomeUtente@server.com. Ma quando iniziamo ad aggiungere parametri e svolgere configurazioni avanzate rischiamo rapidamente di trovarci a digitare dei "mostri" come ssh -i /home/zane/ssh/chiave2 -R 8080:127.0.0.1:8080 root@server.com ogni volta che vogliamo connetterci. Ebbene: il file sshconfig è fatto apposta per semplificare la vita e riportare tutto ad un più pratico comando ssh server. Vediamo come utilizzarlo in questo approfondimento:

» Leggi: [guida] Semplificare la connessione SSH con tunnel, proxy e chiavi diverse: guida a sshconfig

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - come usare sshconfig

Guida SSH, Passo 11: Consentire l'accesso ad un altro utente

Seguendo la procedura appena descritta, siamo riusciti a collegarci al server. Ma... come fare per consentire ad un'altra persona di collegarsi anch'essa in SSH? In realtà, la procedura è davvero molto semplice. Basta creare un account utente per il collega tramite il comando:

sudo useradd nomeUtenteCollega

» Leggi anche: Linux/Ubuntu: come creare un account utente da linea di comando - guida rapida a useradd e adduser

SSH Windows, Linux, Mac: Guida Definitiva - Come accedere VPS, server cloud AWS/Azure server aziendale facilità (video) - ubuntu linux useradd

La procedura guidata ci chiederà di scegliere una password: comunichiamola insieme al nomeUtenteCollega che abbiamo scelto ed anche il nostro collaboratore potrà accedere al server seguendo la stessa procedura descritta in apertura.

Conclusioni

In questa guida abbiamo visto come usare SSH. L'utilizzo di base del comando è davvero molto semplice e consente di prendere il controllo di un sistema attraverso la rete, anche quando ci si trova a migliaia di chilometri di distanza.

Padroneggiando però anche scp e tunneling, SSH si rivela uno strumento prezioso in molteplici circostanze, classificandosi a tutti gli effetti come una delle competenze di base che ogni smanettone, studente o professionista del campo IT dovrebbe possedere.