CodeGym /Corsi /Docker SELF /Introduzione a SSH: configurazione dell'accesso remoto, u...

Introduzione a SSH: configurazione dell'accesso remoto, utilizzo delle chiavi

Docker SELF
Livello 4 , Lezione 3
Disponibile

Introduzione a SSH: configurazione dell'accesso remoto, utilizzo delle chiavi

1. Cos'è SSH?

Immagina di trovarti a un lato del pianeta, mentre il server che devi configurare è dall'altro lato. Il lavoro di un tecnico IT che corre da un ufficio all'altro non è ciò che vogliamo. Per fortuna, esiste SSH (Secure SHell), uno strumento per la gestione remota dei server.

SSH è un protocollo di rete che consente di connettersi in modo sicuro a computer remoti. La connessione avviene utilizzando la crittografia, il che significa che i dati trasmessi sono protetti da occhi indiscreti. SSH sostituisce metodi obsoleti come Telnet, che trasmetteva i dati in chiaro (come una cartolina delle Poste Italiane).

Vantaggi di SSH

  1. Sicurezza. SSH utilizza la crittografia per proteggere i dati da intercettazioni.
  2. Flessibilità. Gestione remota del server, trasferimento file, creazione di tunnel — tutto questo è possibile con SSH.
  3. Cross-platform. Funziona sia su Linux, che su Windows (incluso WSL), sia su MacOS.

Ora che hai capito a cosa serve SSH, passiamo alla pratica.


2. Installazione del client SSH

Iniziamo con il client, che ti permetterà di collegarti al server. Se stai utilizzando una moderna distribuzione di Linux, è probabile che il client SSH sia già installato. Controlliamo questo:

ssh -V

Dovresti vedere le informazioni sulla versione del client SSH. Se il comando non viene trovato, installalo (su Ubuntu e altre distribuzioni basate su Debian):

sudo apt update
sudo apt install openssh-client

Su MacOS il client SSH è preinstallato, mentre se lavori in WSL, l'installazione è simile a Linux.


3. Connessione a un server remoto tramite SSH

La connessione al server si esegue con il comando:

ssh username@hostname
  • username — è il nome utente sul server remoto.
  • hostname — è l'indirizzo IP o il nome di dominio del server.

Esempio di connessione:

ssh student@192.168.1.10

Se tutto è configurato correttamente, il sistema ti chiederà una password. Dopo aver inserito la password, ti troverai nella console remota del server. Congratulazioni, sei a metà strada per diventare l'operatore del super-cattivo in un film sui hacker.


4. Installazione e configurazione del server SSH

Installazione del server SSH

Se stai lavorando su un server o una macchina locale a cui vuoi connetterti, devi installare il server SSH. Su Ubuntu fallo così:

sudo apt update
sudo apt install openssh-server

Controlliamo lo stato del servizio SSH:

sudo systemctl status ssh

Dovresti vedere un messaggio tipo active (running). Se il server non è avviato, usa:

sudo systemctl start ssh
sudo systemctl enable ssh

Ora il server SSH è pronto per accettare connessioni.


Configurazione del server SSH

Il file di configurazione principale del server SSH è /etc/ssh/sshd_config. Per modificarlo utilizza qualsiasi editor di testo, ad esempio nano:

sudo nano /etc/ssh/sshd_config

Fai attenzione ai seguenti parametri:

  • Port 22 — porta su cui lavora SSH.
  • PermitRootLogin no — divieto di connessione per root (si consiglia di lasciare no per motivi di sicurezza).
  • PasswordAuthentication yes — permesso di connessione tramite password.

Dopo aver modificato i parametri, riavvia il server SSH:

sudo systemctl restart ssh

5. Utilizzo dell'autenticazione con chiavi

Connettersi con una password è comodo, ma non sicuro. Il miglior approccio è usare le chiavi SSH.

Generazione di chiavi SSH

Sulla macchina client, esegui il comando:

ssh-keygen

Lo script chiederà il percorso per salvare la chiave (di default ~/.ssh/id_rsa). Puoi premere Enter per accettare il percorso predefinito. Poi ti verrà chiesta una passphrase. È meglio lasciarlo vuoto per semplificare (anche se non è molto sicuro).

Dopo aver eseguito il comando, i file delle chiavi verranno creati:

  • id_rsa — chiave privata (non renderla pubblica, come il codice sorgente del tuo progetto prima del rilascio, specialmente se ha accumulato debiti tecnici).
  • id_rsa.pub — chiave pubblica (può essere usata per connettersi).

Trasferire la chiave al server

Utilizza il comando ssh-copy-id per trasferire la chiave pubblica al server:

ssh-copy-id username@hostname

Questo aggiungerà la tua chiave pubblica al file ~/.ssh/authorized_keys sul server. Ora puoi connetterti senza inserire la password.

Prova:

ssh username@hostname

Se tutto è andato bene, non ti verrà chiesta la password. La tua vita è ufficialmente diventata un po' più semplice.

SSH e WSL

Se lavori su Windows con WSL, puoi anche lì usare SSH. Apri il terminale WSL e installa il client SSH:

sudo apt update
sudo apt install openssh-client

I passaggi successivi sono gli stessi di Linux.


6. Parte pratica: configurazione di SSH su localhost

Per fare pratica puoi configurare una connessione SSH tra due macchine nella stessa rete o anche sul tuo computer (utilizzando localhost come indirizzo).

  1. Installa il server e il client SSH sulla stessa macchina.
  2. Connettiti tramite l'indirizzo locale:
ssh your_user@localhost
  1. Configura la connessione tramite chiave come mostrato sopra.

Alla fine dovresti ottenere una connessione senza inserire la password.


7. Lavorare con configurazioni e alias SSH

Se ti connetti spesso a diversi server, puoi semplificarti la vita aggiungendo una configurazione SSH al file ~/.ssh/config:

Host myserver
    HostName 192.168.1.10
    User student
    IdentityFile ~/.ssh/id_rsa

Ora puoi connetterti semplicemente con il comando:

ssh myserver

Errori comuni e come risolverli

  1. Errore "Connection refused". Questo significa che il server SSH non è avviato sulla macchina remota. Assicurati che sia installato e avviato.

  2. Errore "Permission denied". Oppure hai inserito una password errata, oppure le chiavi sono configurate male. Controlla il contenuto del file ~/.ssh/authorized_keys sul server.

  3. Errore "No route to host". Verifica se il server è raggiungibile in rete (usa ping).


Ora sei armato di conoscenze su come configurare SSH, utilizzare le chiavi e evitare i problemi più comuni. È uno strumento potente che viene utilizzato ovunque, sia per configurare server al lavoro che per gestire un Raspberry Pi a casa.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION