Ssh Linux e’ sinonimo di sicurezza nell’amministrazione di sistemi e della gestione dei server. Acronimo di Secure Shell, un protocollo di rete crittografato che consente di stabilire una connessione sicura tra due dispositivi. Che si tratti di accedere a un server remoto, trasferire file in modo sicuro o eseguire comandi da terminale, SSH rappresenta uno strumento essenziale per amministratori di sistema, sviluppatori e appassionati di informatica.
In Questo Articolo:
Cos’è SSH
SSH, o Secure Shell, è un protocollo di comunicazione sicuro progettato per consentire l’accesso remoto a un altro computer tramite una rete non sicura. Introdotto nel 1995 come sostituto più sicuro di protocolli meno affidabili come Telnet o rlogin, SSH utilizza la crittografia per proteggere l’integrità e la riservatezza dei dati trasmessi.
A differenza dei protocolli precedenti, che inviavano dati in chiaro (compresi nome utente e password), SSH impiega tecniche crittografiche avanzate per impedire intercettazioni e manomissioni. È comunemente utilizzato per:
Accedere a shell di comando su server remoti
Trasferire file in modo sicuro tramite
scp
osftp
Creare tunnel cifrati per applicazioni o database
Il protocollo opera generalmente sulla porta 22 e supporta diversi metodi di autenticazione, tra cui password, chiavi pubbliche e certificate.

Come funziona SSH
Alla base del funzionamento di SSH c’è un sistema di crittografia a chiave pubblica. Questo meccanismo consente di stabilire una connessione sicura tra due dispositivi, anche su una rete potenzialmente insicura, come Internet.
🔐
1. Crittografia a chiave pubblica e privata
🗝️ Coppia di chiavi:
Chiave pubblica → condivisibile
Chiave privata → segreta
🔄 Processo di autenticazione:
Il client invia la chiave pubblica al server
Il server cifra un messaggio con essa
Solo chi possiede la chiave privata può decifrarlo
Se la decifratura è corretta → accesso consentito
2. Sicurezza della trasmissione
Tutto il traffico SSH è cifrato
✅ Comandi digitati
✅ Output ricevuto
✅ File trasferiti (
scp
,sftp
)
🔐 Protezione da intercettazioni e attacchi MITM (Man-In-The-Middle)
🔁
3. Verifica dell’identità del server
🧠 Prima connessione: il client salva l’impronta digitale (fingerprint) del server
⚠️ Se l’impronta cambia in futuro:
Potenziale attacco o modifica non autorizzata
Viene visualizzato un avviso di sicurezza
Utilizzo base del comando SSH in Linux
ssh mario@192.168.1.10
In questo esempio:
mario
è il nome utente sul server remoto192.168.1.10
è l’indirizzo IP del server
Una volta eseguito il comando, il sistema chiederà la password dell’utente remoto (a meno che non sia configurata l’autenticazione con chiave pubblica).
Opzioni utili del comando SSH
Opzione | Descrizione |
---|---|
-p | Specifica una porta diversa dalla 22. Es: ssh -p 2222 utente@host |
-i | Indica un file di chiave privata da usare. Es: ssh -i ~/.ssh/id_rsa utente@host |
-v | Modalità verbosa: utile per il debug della connessione |
-N | Non esegue comandi, utile per il tunneling |
-L | Abilita il port forwarding locale |
-X | Abilita il forwarding grafico X11 (per GUI da remoto) |

Autenticazione con chiave pubblica
L’autenticazione con chiave pubblica è un metodo più sicuro e comodo rispetto all’utilizzo della password. Invece di digitare ogni volta una password, puoi configurare il tuo sistema in modo che la connessione SSH avvenga automaticamente tramite una coppia di chiavi crittografiche.
1. Generare la coppia di chiavi
ssh-keygen
Verrà chiesto dove salvare la chiave (di default:
~/.ssh/id_rsa
)Puoi (opzionalmente) impostare una passphrase per maggiore sicurezza
Verranno generati due file:
id_rsa
→ chiave privata (non va mai condivisa)id_rsa.pub
→ chiave pubblica (da copiare sul server)
2. Copiare la Chiave pubblica sul server remoto
ssh-copy-id mario@192.168.1.10
Questo comando:
Verifica la connessione al server
Copia la chiave pubblica nel file corretto
Imposta i permessi adeguati
3. Collegarsi al server senza password
Una volta copiata la chiave pubblica, puoi accededere al server senza dover digitare ogni volta la password:
ssh mario@192.168.1.10
Se avevi impostato una ‘passphrase’ durante la creazione della chiave, ti verra’ chiesta queslla(non la password del server).
Opzione: Disabilitare l’accesso con password
Per una maggiore sicurezza, si puo’ disattivare l’autenticazione con password sul server, forzando l’uso delle chiavi.
Modifica il file /etc/ssh/ssh_config sul server:
PasswordAuthentication no
Poi riavvvia il servizio SSH:
sudo systemctl restart sshd
Attenzione: fallo solo dopo aver verificato che l’accesso con chiave funzioni correttamente!

SSH e Linux per X11 Forwarding
X11 è il sistema grafico su cui si basano la maggior parte delle interfacce grafiche su Linux. SSH Linux ti permette di reindirizzare (“forward”) la grafica delle applicazioni da un server remoto al tuo computer locale.
Obiettivo
Lanciare programmi grafici (es. gedit
, firefox
, nautilus
) presenti su un server remoto, ma visualizzarli e usarli sul tuo computer locale.
Requisiti
X11Forwarding yes
X11DisplayOffset 10
X11UserLocalhost yes
3. Riavvia il demone SSH sul server dopo la modifica:
sudo systemctl restart sshd
Come usare il forwarding X11
Comando SSH con -X:
ssh -X mario@192.168.1.10
- -X abilita il forwarding X11 in modo sicuro
- Una volta dentro, puoi lanciare qualsiasi programma grafico intallato sul server usando il terminale
Esmpi lanciamo da terminale questi programmi:
gedit
nautilus
firefox
Questi programmi verranno eseguiti sul server remoto, ma appariranno sul tuo schermo locale.
Attenzione a:
- Alcuni ambienti o applicazioni moderne protrebbero non funzionare bene con X11; in questi casi si consiglia VNC, NoMachine o Wayland remoting
- In caso di errori, porva ad usare -Y(trusting forwarding):
ssh -Y mario@192.168.1.10
Ottimizzazione delle prestazioni
- Usa l’opzione di compressione -C per migliorare le prestazioni:
ssh -X -C mario@serever_remoto
2. Se riscontri lentezza, puoi specificare un algoritmo di cifratura piu’ leggero:
ssh -X -c aes128-ctr mario@server_remoto
Risoluzione dei problemi comuni
- Errore “Can’t open display”: verifica che la variabile
DISPLAY
sia impostata correttamente sul server dopo la connessione:
echo $DISPLAY
- Dovrebbe mostrare qualcosa come
localhost:10.0
- Se hai problemi di permessi, prova a utilizzare
xhost +
sul client locale (ma usalo con cautela poiché riduce la sicurezza).
Port Forwarding locale con SSH e Linux
Il port forwarding locale (o local port forwarding) permette di redirigere una porta del tuo computer locale verso una porta su un server remoto, attraverso una connessione SSH cifrata.
In pratica, puoi accedere in sicurezza a servizi non esposti su Internet, come database, dashboard interne, o interfacce web, passando attraverso SSH Linux.
ssh -L [porta_locale]:[host_remoto]:[porta_remota] utente@server_ssh
-L
: indica che stai facendo local port forwardingporta_locale
: è la porta sul tuo PC da cui accederaihost_remoto
: il nome host o IP del server di destinazione visto dal server SSHporta_remota
: la porta su cui gira il servizio remotoutente@server_ssh
: il server SSH che usi come “ponte”
Esempio pratico: accesso al servizio Calibre installato su un server remoto
Negli scorsi giorni ho installato il Servizio Calibre(software per gli ebook reader e conversione) su un server remoto senza abilitare la porta 8080 dal router. In questo modo non e’ possibile accedere al servizio da remoto.
Con SSH andremo a fare Port Forwarding Locale, ridirigendo il traffico della porta 8080 del servizio remoto Calibre sulla porta locale del mio pc 9001, creando di fatto un tunneling sicuro con ssh e Linux.
ssh -L 9001:localhost:8080 mario@server_ssh
Successivamente digitando sulla barra degli indirizzi del mio browser locale l’indirizzo “localhost:9001″ posso accedere direttamente al servizio Calibre in esecuzione sul server remoto.


Nell’esempio delle immagini la porta del mio server remoto e’ 25.
Questo rappresenta un ottimo modo per evitare che alcuni servizi siano esposti in rete e contestualmente consente di accedervi da remoto in modo sicuro.
Kvm Linux Network: configurare il Networking nella Virtualizzazione