30 Aprile 2025
ssh immagine client server

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:

  1. Comandi base ssh
  2. Autenticazione con chiave pubblica
  3. X11 Forwarding
  4. Port Forwarding Locale

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 o sftp

  • 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.

Visita la nostra pagina Linux

ssh infografica come funziona
ssh linux infografica

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:

    1. Il client invia la chiave pubblica al server

    2. Il server cifra un messaggio con essa

    3. Solo chi possiede la chiave privata può decifrarlo

    4. 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

Leggi: Migliori Distro Linux 2025

Utilizzo base del comando SSH in Linux

ssh mario@192.168.1.10

In questo esempio:

  • mario è il nome utente sul server remoto

  • 192.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

OpzioneDescrizione
-pSpecifica una porta diversa dalla 22. Es: ssh -p 2222 utente@host
-iIndica un file di chiave privata da usare. Es: ssh -i ~/.ssh/id_rsa utente@host
-vModalità verbosa: utile per il debug della connessione
-NNon esegue comandi, utile per il tunneling
-LAbilita il port forwarding locale
-XAbilita il forwarding grafico X11 (per GUI da remoto)
ssh-keygen infografica su utilizzo

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_rsachiave privata (non va mai condivisa)

    • id_rsa.pubchiave 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!

Leggi: Comandi Linux PDF

ssh forwarding con lancio firefox sul server
firefox lanciato sul server visibile in locale

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

  1. Il tuo client SSH (PC locale) deve avere un server X attivo:

    • Su Linux: già integrato (X11 o Wayland con XWayland)

    • Su Windows: serve installare un programma come VcXsrv o [Xming]

    • Su macOS: installare XQuartz

  2. Il server SSH remoto deve abilitare il forwarding X11:

    • In /etc/ssh/sshd_config:

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

    1. 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).

Leggi: Le Distribuzioni Linux Russe

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 forwarding

  • porta_locale: è la porta sul tuo PC da cui accederai

  • host_remoto: il nome host o IP del server di destinazione visto dal server SSH

  • porta_remota: la porta su cui gira il servizio remoto

  • utente@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.

ssh tunneling del servizio calibre su server remoto
Ssh tunneling servizio Calibre in esecuzione su server remoto
Servizio Calibre in esecuzione su browser locale tramite tunneling SSH
Calibre in esecuzione sul server remoto con accesso tramite tunneling SSH con browser locale

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

di luc

Related Post

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *