Potrebbero esserci momenti in cui è necessario accedere a un computer da remoto. Potrebbe essere necessario accedere a un file, aiutare un amico con un problema o persino trasferire file tra computer. Qualunque cosa sia Secure Shell (SSH) ti consente di connetterti a un altro computer che esegue Linux (o addirittura un altro sistema Unix come BSD o Solaris) tramite una connessione crittografata. Affinché un host remoto possa ricevere connessioni SSH, è necessario che il demone sia in esecuzione (sshd) e che accetti i pacchetti in arrivo sulla porta 22 se viene utilizzato un firewall.
Come funziona SSH
L'idea alla base di SSH è quella di consentire a un utente di interagire in remoto con un computer tramite il terminale su una connessione crittografata. Ciò significa che i dati trasmessi (come il nome utente e la password utilizzati per l'accesso) sono sicuri, impedendo così a un utente malintenzionato di raccogliere facilmente dati sensibili utilizzando uno sniffer di pacchetti, cosa che accadrebbe se si utilizzasse Remote Shell (RSH) su Internet perché i tuoi dati di accesso verrebbero inviati al server come testo normale (nessuna crittografia).
Imposta SSH
Se il tuo computer non è in grado di ricevere connessioni SSH, dovrai installare il protocollo SSH se non è già installato. Sistemi come Ubuntu dovrebbero configurare il demone SSH (sshd) per l'esecuzione all'avvio. Se è presente un firewall, potresti anche dover configurare le impostazioni per consentire le connessioni in entrata alla porta 22 o a qualsiasi porta che hai scelto SSH per accettare le connessioni in entrata.
$ sudo apt install ssh
Una semplice dimostrazione
Come per molte cose con Linux, il processo di accesso a una shell remota è semplice. Apriamo un terminale e accediamo a una macchina con il nome utente "unix_allsort":
$ ssh [email protected]
Se è la prima volta che accedi a un particolare host utilizzando il tuo computer con l'utente corrente, ti verrà chiesto se desideri accettare quell'host nell'elenco delle connessioni conosciute. Se non lo è e ricevi quel messaggio, potrebbe essere un host completamente diverso, il che potrebbe indicare che qualcuno si sta mascherando da quel computer!
Dopo esserti autenticato, dovresti essere in grado di navigare nel sistema come faresti se fossi al computer di persona.
Potresti anche usare SSH su quel computer per accedere a un altro computer remoto:
[email protected]:~$ ssh [email protected]
Esecuzione di programmi su host remoti OPPURE SSH Esegui comando remoto
C'è un'opzione per eseguire un'applicazione su un host remoto una volta effettuato l'accesso tramite SSH. Un esempio potrebbe essere quello di avviare un editor per modificare un particolare file su detto host.
$ ssh -t [email protected] vim ~/Documents/list.txt
Saresti in grado di usare vim come faresti se stessi usando quel computer di persona. L'opzione '-t' è richiesta ogni volta che desideri avviare programmi come vim da un host remoto. Questo parametro viene utilizzato per forzare l'allocazione pseudo-terminale. La pagina man afferma che i programmi basati su schermo, come vim, dovrebbero essere avviati con questa opzione per questo motivo. Se manca, alcune app del terminale potrebbero non funzionare correttamente.
Applicazioni GUI
SSH fornisce anche un modo per avviare un programma GUI X11, come Firefox, al contrario di un programma di solo testo.
$ ssh -X [email protected]
Firefox Il parametro '-X' indica semplicemente all'host remoto di consentire al computer connesso di avviare molte applicazioni X quando richiesto, tramite la shell o in altro modo. Molti programmi possono essere eseguiti in questo modo, browser web, editor, persino alcuni programmi Windows tramite Wine. Ho scoperto che gli emulatori di terminale su X si rifiutano di funzionare. Inoltre, fare riferimento alla pagina man per ulteriori informazioni sull'inoltro X11.
Nota: È possibile che si verifichi questo errore durante la registrazione utilizzando SSH con l'inoltro X11 abilitato:/usr/bin/xauth:timeout nel file di autorità di blocco /home/tua_casa/.Xauthority Se ciò si verifica, il problema è che un file di blocco per 'xauth' è già esiste. La soluzione è rimuovere il file di blocco. Potrebbe essercene più di uno, quindi esegui questo comando per rimuoverli (forzatamente se necessario):
$ rm -rf ~/.Xauthority-*
Disconnettersi dalla sessione SSH e accedere nuovamente. Dovresti quindi essere in grado di eseguire nuovamente le app X.
Configurazione di SSH senza password
È possibile accedere da remoto a un computer senza dover inserire le proprie credenziali. Ciò richiede che i computer siano configurati in modo da consentire al tuo computer di accedere in questo modo, ottenibile attraverso l'uso di coppie di chiavi generate utilizzando "ssh-keygen '.
Innanzitutto, la chiave deve essere generata. Qui, è accettabile attenersi alle impostazioni predefinite. Poiché lo scopo di questo esercizio è saltare l'immissione di qualsiasi password o passphrase nel terminale ogni volta che viene avviata una sessione, non desideriamo avere una passphrase per questa chiave.
Dopo che tutto è stato creato, il ky che si trova nel file di identità deve essere installato sul computer remoto:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Se questi passaggi sono stati eseguiti correttamente, dovresti essere in grado di accedere tramite SSH al PC senza che ti venga richiesta una password.
Strumenti che si basano su SSH
Copia protetta
SCP (Secure Copy) consente agli utenti di copiare file da o verso un host remoto tramite una connessione sicura. La sintassi è molto simile al comando 'cp' in cui specifichi i file o le cartelle e la loro destinazione. Ecco un esempio:
$ scp ~/Documents/shopping.odt [email protected]:~/Documents
Abbiamo appena copiato un file su Internet tramite una connessione protetta a un computer remoto. Lo stesso può essere fatto anche per le cartelle:
$ scp -r [email protected]:~/Documents/Reports ~/Documents
Questo copia una cartella (da cui '-r' per ricorsivo) e il suo contenuto da un PC remoto al tuo computer.
Protocollo di trasferimento file SSH (SFTP)
SFTP consente l'accesso sicuro e la trasmissione di file utilizzando il protocollo di trasferimento file tramite SSH.
Conclusione
Con SSH puoi accedere facilmente a un altro computer da quasi ovunque in circostanze normali. L'inoltro X11 può essere abilitato per eseguire app della GUI dalla macchina remota e i programmi possono essere avviati invece di avviare una shell. La pagina man di SSH fornisce molte informazioni utili, quindi dai un'occhiata.