Ricerca nel sito web

Come utilizzare SSH per connettersi a un server remoto


introduzione

Uno strumento essenziale da padroneggiare come amministratore di sistema è SSH.

SSH, o Secure Shell, è un protocollo utilizzato per accedere in modo sicuro ai sistemi remoti. È il modo più comune per accedere ai server Linux remoti.

In questa guida, discuteremo come utilizzare SSH per connettersi a un sistema remoto.

Sintassi di base

Per connetterci a un sistema remoto usando SSH, useremo il comando ssh.

Se stai usando Windows, dovrai installare una versione di OpenSSH per poter ssh da un terminale. Se preferisci lavorare in PowerShell, puoi seguire Git per Windows, che fornisce un ambiente terminale bash nativo di Windows che include il comando ssh. Ognuno di questi è ben supportato e qualunque cosa tu decida di utilizzare dipenderà dalle preferenze.

Se stai usando un Mac o Linux, avrai già il comando ssh disponibile nel tuo terminale.

La forma più semplice del comando è:

  1. ssh remote_host

Il remote_host in questo esempio è l'indirizzo IP o il nome di dominio a cui stai tentando di connetterti.

Questo comando presuppone che il tuo nome utente sul sistema remoto sia lo stesso del tuo nome utente sul tuo sistema locale.

Se il tuo nome utente è diverso sul sistema remoto, puoi specificarlo utilizzando questa sintassi:

  1. ssh remote_username@remote_host

Dopo esserti connesso al server, ti potrebbe essere chiesto di verificare la tua identità fornendo una password. Successivamente, tratteremo come generare chiavi da utilizzare al posto delle password.

Per uscire dalla sessione ssh e tornare alla sessione della shell locale, digitare:

  1. exit

Come funziona SSH?

SSH funziona collegando un programma client a un server ssh, chiamato sshd.

Nella sezione precedente, ssh era il programma client. Il server ssh era già in esecuzione sull'remote_host che abbiamo specificato.

In quasi tutti gli ambienti Linux, il server sshd dovrebbe avviarsi automaticamente. Se non è in esecuzione per qualsiasi motivo, potrebbe essere necessario accedere temporaneamente al server tramite una console basata sul Web o una console seriale locale.

Il processo necessario per avviare un server ssh dipende dalla distribuzione di Linux che stai utilizzando.

Su Ubuntu, puoi avviare il server ssh digitando:

  1. sudo systemctl start ssh

Questo dovrebbe avviare il server sshd e puoi quindi accedere da remoto.

Come configurare SSH

Quando modifichi la configurazione di SSH, stai modificando le impostazioni del server sshd.

In Ubuntu, il file di configurazione principale di sshd si trova in /etc/ssh/sshd_config.

Eseguire il backup della versione corrente di questo file prima di modificarlo:

  1. sudo cp /etc/ssh/sshd_config{,.bak}

Aprilo usando nano o il tuo editor di testo preferito:

  1. sudo nano /etc/ssh/sshd_config

Ti consigliamo di lasciare la maggior parte delle opzioni in questo file da solo. Tuttavia, ce ne sono alcuni che potresti voler dare un'occhiata a:

Port 22

La dichiarazione della porta specifica su quale porta il server sshd ascolterà le connessioni. Per impostazione predefinita, questo è 22. Probabilmente dovresti lasciare questa impostazione da sola, a meno che tu non abbia motivi specifici per fare diversamente. Se fai la tua porta, ti mostreremo come connetterti alla nuova porta in seguito.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Le dichiarazioni delle chiavi host specificano dove cercare le chiavi host globali. Discuteremo in seguito cos'è una chiave host.

SyslogFacility AUTH
LogLevel INFO

Questi due elementi indicano il livello di registrazione che dovrebbe verificarsi.

Se hai difficoltà con SSH, aumentare la quantità di registrazione può essere un buon modo per scoprire qual è il problema.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Questi parametri specificano alcune delle informazioni di accesso.

LoginGraceTime specifica per quanti secondi mantenere attiva la connessione senza eseguire correttamente l'accesso.

Potrebbe essere una buona idea impostare questo tempo un po' più alto del tempo necessario per accedere normalmente.

PermitRootLogin seleziona se l'utente root può accedere.

Nella maggior parte dei casi, questo dovrebbe essere cambiato in no quando hai creato un account utente che ha accesso a privilegi elevati (tramite su o sudo) e può accedere tramite ssh, al fine di ridurre al minimo il rischio che qualcuno ottenga l'accesso root al tuo server.

strictModes è una guardia di sicurezza che rifiuterà un tentativo di accesso se i file di autenticazione sono leggibili da tutti.

Ciò impedisce i tentativi di accesso quando i file di configurazione non sono protetti.

X11Forwarding yes
X11DisplayOffset 10

Questi parametri configurano un'abilità chiamata X11 Forwarding. Ciò consente di visualizzare l'interfaccia utente grafica (GUI) di un sistema remoto sul sistema locale.

Questa opzione deve essere abilitata sul server e fornita con il client SSH durante la connessione con l'opzione -X.

Dopo aver apportato le modifiche, salva e chiudi il file. Se stai usando nano, premi Ctrl+X, quindi quando richiesto, Y e poi Invio.

Se hai modificato qualsiasi impostazione in /etc/ssh/sshd_config, assicurati di ricaricare il tuo server sshd per implementare le tue modifiche:

  1. sudo systemctl reload ssh

Dovresti testare a fondo le tue modifiche per assicurarti che funzionino nel modo previsto.

Potrebbe essere una buona idea tenere aperte alcune sessioni di terminale mentre si apportano modifiche. Ciò ti consentirà di ripristinare la configurazione, se necessario, senza bloccarti.

Come accedere a SSH con le chiavi

Sebbene sia utile poter accedere a un sistema remoto utilizzando le password, è più veloce e più sicuro configurare l'autenticazione basata su chiave.

Come funziona l'autenticazione basata su chiave?

L'autenticazione basata su chiave funziona creando una coppia di chiavi: una chiave privata e una chiave pubblica.

La chiave privata si trova sul computer client ed è protetta e tenuta segreta.

La chiave pubblica può essere data a chiunque o posizionata su qualsiasi server a cui desideri accedere.

Quando tenti di connetterti utilizzando una coppia di chiavi, il server utilizzerà la chiave pubblica per creare un messaggio per il computer client che può essere letto solo con la chiave privata.

Il computer client invia quindi la risposta appropriata al server e il server saprà che il client è legittimo.

Questo processo viene eseguito automaticamente dopo aver configurato le chiavi.

Come creare chiavi SSH

Le chiavi SSH devono essere generate sul computer da cui desideri accedere da. Di solito è la tua macchina locale.

Immettere quanto segue nella riga di comando:

  1. ssh-keygen -t rsa

È possibile che ti venga richiesto di impostare una password sui file chiave stessi, ma questa è una pratica abbastanza insolita e dovresti premere Invio attraverso le richieste per accettare i valori predefiniti. Le tue chiavi verranno create in ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.

Passare alla directory .ssh digitando:

  1. cd ~/.ssh

Guarda i permessi dei file:

  1. ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

Come puoi vedere, il file id_rsa è leggibile e scrivibile solo dal proprietario. Questo aiuta a mantenerlo segreto.

Il file id_rsa.pub, tuttavia, può essere condiviso e dispone delle autorizzazioni appropriate per questa attività.

Come trasferire la tua chiave pubblica al server

Se attualmente disponi di un accesso basato su password a un server, puoi copiare la tua chiave pubblica su di esso emettendo questo comando:

  1. ssh-copy-id remote_host

Questo avvierà una sessione SSH. Dopo aver inserito la password, copierà la tua chiave pubblica nel file delle chiavi autorizzate del server, che ti consentirà di accedere senza la password la prossima volta.

Opzioni lato client

Ci sono una serie di flag facoltativi che puoi fornire quando ti connetti tramite SSH.

Alcuni di questi potrebbero essere necessari per corrispondere alle impostazioni nella configurazione sshd dell'host remoto.

Ad esempio, se hai modificato il numero di porta nella tua configurazione sshd, dovrai far corrispondere quella porta sul lato client digitando:

  1. ssh -p port_number remote_host

Nota: cambiare la tua porta ssh è un modo ragionevole per fornire sicurezza attraverso l'oscurità. Se consenti normalmente le connessioni ssh a una distribuzione di server ampiamente nota sulla porta 22 e hai abilitato l'autenticazione della password, probabilmente verrai attaccato da molti tentativi di accesso automatizzati. L'uso esclusivo dell'autenticazione basata su chiave e l'esecuzione di ssh su una porta non standard non è la soluzione di sicurezza più complessa che puoi utilizzare, ma dovrebbe ridurla al minimo.

Se vuoi eseguire un solo comando su un sistema remoto, puoi specificarlo dopo l'host in questo modo:

  1. ssh remote_host command_to_run

Ti connetterai alla macchina remota, ti autenticherai e il comando verrà eseguito.

Come abbiamo detto prima, se l'inoltro X11 è abilitato su entrambi i computer, puoi accedere a tale funzionalità digitando:

  1. ssh -X remote_host

A condizione che tu abbia gli strumenti appropriati sul tuo computer, i programmi GUI che usi sul sistema remoto ora apriranno la loro finestra sul tuo sistema locale.

Disattivazione dell'autenticazione tramite password

Se hai creato chiavi SSH, puoi migliorare la sicurezza del tuo server disabilitando l'autenticazione con sola password. A parte la console, l'unico modo per accedere al tuo server sarà tramite la chiave privata che si accoppia con la chiave pubblica che hai installato sul server.

Avviso: prima di procedere con questo passaggio, assicurati di aver installato una chiave pubblica sul tuo server. Altrimenti, sarai bloccato!

Come root o utente con privilegi sudo, apri il file di configurazione sshd:

  1. sudo nano /etc/ssh/sshd_config

Individua la riga che riporta Password Authentication e rimuovi il commento rimuovendo il # iniziale. Puoi quindi modificare il suo valore in no:

PasswordAuthentication no

Altre due impostazioni che non dovrebbero essere modificate (ammesso che tu non abbia modificato questo file prima) sono PubkeyAuthentication e ChallengeResponseAuthentication. Sono impostati per impostazione predefinita e dovrebbero essere letti come segue:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Dopo aver apportato le modifiche, salva e chiudi il file.

Ora puoi ricaricare il demone SSH:

  1. sudo systemctl reload ssh

L'autenticazione della password ora dovrebbe essere disabilitata e il tuo server dovrebbe essere accessibile solo tramite l'autenticazione della chiave SSH.

Conclusione

Imparare come aggirare SSH sarà di grande beneficio per qualsiasi tuo futuro impegno nel cloud computing. Man mano che utilizzi le varie opzioni, scoprirai funzionalità più avanzate che possono semplificarti la vita. SSH è rimasto popolare perché è sicuro, leggero e utile in diverse situazioni.

Successivamente, potresti voler imparare a lavorare con SFTP per eseguire trasferimenti di file da riga di comando.