Per amministrare un server o modificare i file di un sito bisogna collegarsi da remoto. Per molto tempo Telnet e FTP lo hanno fatto inviando la password in chiaro, leggibile da chiunque si trovasse sul percorso. SSH cifra l’intera sessione e verifica l’identità del server. L’implementazione più diffusa, OpenSSH, è presente su quasi tutti i server Linux ed è integrata nelle versioni recenti di Windows e macOS.
SSH: il terminale remoto
Un comando come ssh utente@esempio.it apre un terminale sul server, per impostazione predefinita sulla porta 22. Lì si lanciano comandi come se si fosse davanti alla macchina: consultare i log, contare i file o usare WP-CLI per gestire WordPress. Alla prima connessione il client mostra l’impronta (fingerprint) della chiave del server: verificarla protegge dall’intercettazione della connessione.
SFTP: i file sullo stesso canale
Nonostante il nome, SFTP non ha nulla a che vedere con FTP: è un sottosistema di SSH. I client più comuni (FileZilla, WinSCP, Cyberduck) lo supportano, con lo stesso utente e la stessa porta di SSH. Non va confuso con FTPS, che aggiunge TLS al FTP classico. In un hosting condiviso l’accesso SFTP è talvolta disponibile senza terminale, e in quel caso gira nello spazio isolato dell’account, per esempio con CageFS.
L’autenticazione con chiave
Invece di una password, SSH accetta una coppia di chiavi. Da OpenSSH 9.5 ssh-keygen crea per impostazione predefinita una chiave Ed25519: la chiave privata resta sul tuo computer, quella pubblica viene aggiunta al file ~/.ssh/authorized_keys dell’account sul server. Alla connessione il client dimostra di possedere la chiave privata senza mai trasmetterla.

ssh-keygen -t ed25519
ssh-copy-id utente@esempio.it
Proteggi la chiave privata con una passphrase: la documentazione di ssh-keygen consiglia da 10 a 30 caratteri difficili da indovinare. Una chiave rubata senza passphrase apre il server come una password.
Mettere in sicurezza il server SSH
Su un VPS o un server dedicato, il file /etc/ssh/sshd_config regola il servizio. Per impostazione predefinita PasswordAuthentication vale yes e PermitRootLogin vale prohibit-password (root può collegarsi, ma non con la password). Una volta configurate le chiavi e provate da una seconda sessione:
- imposta
PasswordAuthenticationsuno, il che rende inutili gli attacchi brute force sulle password SSH; - imposta
PermitRootLoginsunoe usa un account personale con sudo; - limita gli account autorizzati e, se possibile, gli indirizzi di origine.
Per WordPress
- Sostituisci FTP con SFTP nel tuo client e presso i tuoi collaboratori, ed elimina gli account FTP inutilizzati.
- Dai un accesso per persona, con la sua chiave, da revocare a fine incarico.
- Controlla i permessi dei file caricati: il nostro articolo sui permessi 644 e 755 indica i valori corretti.
- Se sospetti un attacco, SSH dà accesso agli strumenti di diagnosi descritti nella nostra guida il mio sito è stato violato?.