Se hai appena acquistato il tuo VPS (Virtual Private Server) oppure devi accedere ad un'istanza cloud su Amazon (AWS), Microsoft Azure o ad un altro server remoto fornito dall'azienda o dall'università, hai probabilmente bisogno di utilizzare SSH (Secure Shell): uno strumento che ti consente di impartire comandi ad un altro computer collegato 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à

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

Guida SSH: cosa serve, cosa si può fare

Per usare SSH abbiamo bisogno di alcuni elementi:

  • un PC dotato di Windows 10, 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 computer 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à quasi come se avessimo fisicamente collegato la nostra tastiera e lo schermo al computer remoto: potremo quindi impartire comandi come se fossimo seduti davanti alla macchina.

Nell'immagine seguente, vediamo che, dal mio PC fisso con Windows 10 situato a Ferrara, mi sono collegato in SSH al server che eroga il sito TurboLab.it, il quale 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à - zShot_161079266811

Un importante punto di forza di 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.

SSH è uno strumento da linea di comando, ed è l'ideale per interagire con i server. Se stai cercando il modo di utilizzare l'interfaccia grafica, non è questo lo strumento appropriato. A tale scopo, puoi usare:

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

Guida SSH, Passo 1: Aprire il Terminale

Iniziamo dunque aprendo il Terminale:

Una nota particolare per gli utenti Windows. Il comando ssh è integrato nativamente ed è immediatamente disponibile solo a partire dalle versioni recenti di Windows 10. Chi utilizzasse ancora Windows 8 oppure Windows 7 dovrebbe aggiornare gratuitamente, oppure ripiegare su un programma di terze parti, come PuTTY.

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 autorizzato a collegarsi in SSH 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à

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à

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à

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 (a meno che non venga sostituito il server, reinstallato il sistema operativo o modificata la chiave d'identità).

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, ed 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 noleggia il VPS, ad esempio), possiamo visualizzare questa informazione impartendo questo comando sul server:

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

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

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.

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.

Guida SSH, Passo 5: Digitare la password

A questo punto, il server remoto ci potrebbe "buttare 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 parliamo 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à

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à

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, otterremo così l'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à

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/nginx: entra nella cartella indicata
  • cd $HOME: torna alla cartella personale ("home")
  • mkdir MiaNuovaCartella: crea una cartella
  • sudo -s: ottiene i privilegi di amministratore (root)
  • 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

Segnalo inoltre i seguenti approfondimenti:

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

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à - 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à - 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à

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à - 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à - 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 per connetterci ai server remoti. 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.