- Il protocollo SSH stabilisce un canale di comunicazione crittografato per l'amministrazione remota dei sistemi operativi.
- L'autenticazione può essere gestita utilizzando il metodo tradizionale con nome utente e password oppure tramite coppie di chiavi pubblica e privata.
- Esistono diversi client Windows che consentono di eseguire comandi in modo sicuro su server Linux o Windows.
- La crittografia simmetrica, la crittografia asimmetrica e l'hashing garantiscono che le informazioni non vengano intercettate o manipolate.
Probabilmente vi sarà capitato di dover gestire un server che non avete fisicamente davanti a voi. Per farlo senza che qualche hacker con un briciolo di buon senso rubi le vostre chiavi, entra in gioco SSH (Secure Shell) , un protocollo che è diventato lo standard assoluto per navigare nella console di macchine remote in tutta sicurezza.
In pratica, è come aprire una finestra magica che permette di digitare comandi su un computer che potrebbe trovarsi dall'altra parte del mondo, garantendo al contempo la crittografia di tutto il traffico dati . Se si utilizza un VPS o si lavora nel cloud, padroneggiare questo strumento è fondamentale per evitare errori.
In cosa consiste esattamente il protocollo SSH?

Per comprendere appieno questo concetto, dobbiamo fare un passo indietro e ricordare Telnet. Telnet veniva utilizzato per lo stesso scopo, ma presentava un grave problema: inviava tutto in chiaro. Se qualcuno intercettava la connessione, poteva leggere la password come se fosse un libro aperto. SSH è stato creato per risolvere questo problema, implementando un robusto sistema di crittografia che rende le informazioni illeggibili a terzi.
Questo protocollo opera secondo un'architettura client-server. Il server SSH è il software che viene eseguito sulla macchina remota e "rimane in ascolto" delle richieste su una porta specifica (22 per impostazione predefinita). Il client SSH , invece, è l'applicazione che si installa sul proprio PC per avviare la connessione e inviare i comandi.
I pilastri della sicurezza: crittografia e hashing

La magia di SSH sta nel fatto che non utilizza un singolo metodo di protezione, ma una combinazione di tre tecniche matematiche molto potenti:
- Crittografia simmetrica: Viene utilizzato per la comunicazione costante. Sia il client che il server condividono un chiave segreta per codificare e decodificare i dati. Per impedire che questa chiave si propaghi attraverso la rete, utilizzano algoritmi come Diffie-Hellman.
- Crittografia asimmetrica: Viene utilizzato principalmente per l'autenticazione. Ecco una coppia di chiavi: una chiave pubblica che può essere ovunque e un chiava privata che solo tu possiedi. Se il server ha la tua chiave pubblica, può inviarti una sfida che solo tu puoi decifrare con la tua chiave privata.
- Hashing: Questa tecnica viene utilizzata per verificare che nessuno abbia toccato i dati durante il percorso. valore hash univoco (utilizzando MD5 o SHA); se il messaggio viene alterato anche di un solo bit, l'hash cambia e la connessione viene contrassegnata come inaffidabile.
Come connettersi a un server da Windows

In passato Windows era un vero grattacapo per questo scopo, ma oggi esistono soluzioni per tutti i gusti, da chi preferisce cliccare a chi ama la riga di comando.
Opzione 1: Utilizzo del terminale (OpenSSH)
Le versioni moderne di Windows 10 e 11 includono già un client OpenSSH integrato. È sufficiente aprire il Prompt dei comandi (CMD) o PowerShell e digitare il comando. ssh utente@indirizzo-ipAd esempio, se vuoi accedere come root a un server, dovresti digitare ssh [email protected]Il sistema ti chiederà se ti fidi dell'host; digita sì e poi inserisci la password (nota che quando la digiti non vedrai asterischi o punti, è normale per motivi di sicurezza).
Opzione 2: PuTTY (Il classico)
PuTTY è il leggendario strumento per Windows. Per utilizzarlo, scarica il file eseguibile, inserisci l' indirizzo IP del server nel campo "Nome host" e verifica che la porta sia la 22. Cliccando su "Apri" si aprirà una console in cui ti verrà richiesto di inserire nome utente e password. È l'ideale se cerchi uno strumento leggero e semplice.
Opzione 3: Strumenti avanzati
Se gestisci molti server, potresti preferire MobaXterm o Termius . Queste applicazioni ti permettono di salvare le sessioni, gestire le chiavi SSH in modo visivo e includono persino SFTP per il trasferimento di file tramite trascinamento, facendoti risparmiare molto tempo.
Metodi di autenticazione: password vs. chiavi SSH

Sebbene l'accesso tramite nome utente e password sia il metodo più comune, non è il più sicuro. Gli attacchi di forza bruta sono costanti e possono mandare in tilt il server. Pertanto, si consiglia vivamente di utilizzare una coppia di chiavi SSH.
Per creare queste chiavi in Windows, puoi usare il comando ssh-keygenQuesto genererà due file: uno privato (id_rsa) e uno pubblico (id_rsa.pub). Devi caricare la chiave pubblica al server, solitamente salvandolo nel file ~/.ssh/authorized_keysUna volta fatto ciò, potrai accedere al server senza inserire password, poiché l'autenticazione viene effettuata tramite stretta di mano crittografica tra le tue due chiavi.
Gestione dei file e tunnel sicuri
SSH non serve solo per impartire comandi. Permette anche di trasferire file in modo sicuro tramite SFTP (Secure FTP) o SCP. Mentre il tradizionale FTP non è sicuro, SFTP sfrutta il canale SSH per proteggere i file durante la trasmissione.
Un'altra potente funzionalità è il port forwarding . Questo permette di creare un tunnel crittografato per accedere ai servizi interni su una rete privata (come un database MySQL) senza esporre direttamente tali porte all'intera Internet, evitando così vulnerabilità critiche nella propria infrastruttura.
Consigli per proteggere il tuo server SSH
Se hai appena configurato il tuo VPS, non lasciarlo con le impostazioni di fabbrica, perché in questo modo sarai vulnerabile agli attacchi. Ecco alcuni consigli per stare tranquillo:
- Cambia la porta 22: I bot scansionano costantemente la porta 22. Cambiandola con una porta casuale (come la 2200) si ridurrà drasticamente il rumore nei log.
- Disabilita l'accesso root: È meglio accedere con un account utente normale e utilizzare
sudo. Puoi configurarePermitRootLogin prohibit-passwordnel file sshd_config, applicando tecniche di gestione dei privilegi di root. - Implementa un timeout: configura
ClientAliveIntervalin modo che le sessioni inattive si chiudano automaticamente e non rimangano aperte porte posteriori per disattenzione.
Padroneggiare il protocollo Secure Shell è il primo passo per chiunque voglia assumere il pieno controllo della propria infrastruttura remota. Dall'installazione di un semplice client su Windows alla configurazione di tunnel e chiavi asimmetriche, questo strumento garantisce una gestione efficiente del server e, soprattutto, un accesso impenetrabile da occhi indiscreti.

