Come usare SSH per gestire un server

Cos'è SSH e perché è importante
SSH (Secure Shell) è un protocollo di rete che consente una comunicazione sicura tra due computer su una rete non sicura. Nel contesto del web hosting, SSH ti permette di connetterti al tuo server e gestirlo dalla riga di comando: installare software, modificare file di configurazione, riavviare servizi, consultare i log e svolgere tutte le attività amministrative.
Prima di SSH, gli amministratori usavano il protocollo Telnet, che inviava tutti i dati (password incluse) in chiaro, senza crittografia. SSH ha sostituito Telnet portando la crittografia all'intera comunicazione: questo significa che nessuno, intercettando il traffico di rete, può vedere ciò che fai sul server o rubare le tue credenziali di accesso.
SSH funziona secondo il principio dell'architettura client-server. Il tuo computer (client) esegue un programma client SSH che si connette al server SSH (daemon) in esecuzione sul server remoto, di solito sulla porta 22. Dopo l'autenticazione ottieni l'accesso alla riga di comando del server come se fossi seduto davanti ad esso.
Client SSH
Per connetterti a un server tramite SSH ti serve un programma client SSH sul tuo computer.
Linux e macOS - Terminale
Linux e macOS dispongono di un client SSH integrato. Apri l'applicazione Terminale e usa il comando: ssh utente@indirizzo-ip-del-server. Per esempio: ssh root@185.210.45.67. Il sistema chiederà la password (oppure userà una chiave SSH se configurata). Dopo un'autenticazione riuscita vedrai il prompt dei comandi del server e potrai iniziare a lavorare.
Windows - PuTTY
PuTTY è il client SSH gratuito più diffuso per Windows. Scaricalo dal sito ufficiale (putty.org) ed eseguilo. Nel campo "Host Name" inserisci l'indirizzo IP del server, lascia la porta su 22, seleziona "SSH" come tipo di connessione e fai clic su "Open". Apparirà una finestra di terminale con la richiesta di nome utente e password.
Windows 10/11 - SSH integrato
Le versioni più recenti di Windows (10 e 11) includono un client OpenSSH integrato. Apri PowerShell o il Prompt dei comandi e usa lo stesso comando ssh che useresti su Linux. È un approccio più semplice rispetto a PuTTY perché non richiede l'installazione di software aggiuntivo e usa la stessa interfaccia di Linux/macOS.
Client avanzati
Per chi lavora ogni giorno con più server, client avanzati come Termius, MobaXterm o Royal TSX offrono funzionalità aggiuntive: salvataggio delle connessioni, un gestore di file SFTP, schede per più sessioni, un gestore di snippet e l'integrazione con le piattaforme cloud.
Configurazione SSH di base
Una corretta configurazione della connessione SSH ti fa risparmiare tempo e migliora la sicurezza.
File di configurazione SSH
Su Linux e macOS puoi creare un file ~/.ssh/config che memorizza le impostazioni dei tuoi server. Invece di digitare ogni volta il comando completo con indirizzo IP, nome utente e porta, puoi definire degli alias. Per esempio, puoi definire un alias "mioserver" con Host, HostName (indirizzo IP), User (nome utente), Port e IdentityFile (percorso della chiave SSH). Dopodiché basta digitare ssh mioserver e tutto verrà applicato automaticamente.
Modificare la porta predefinita
Per impostazione predefinita SSH usa la porta 22. Passare a una porta diversa (per esempio 2222 o un'altra porta non standard) riduce il numero di attacchi automatizzati, perché la maggior parte dei bot scansiona solo la porta 22. Non è una vera misura di sicurezza (security through obscurity), ma riduce efficacemente il "rumore" nei log. Modifica la porta nel file /etc/ssh/sshd_config sul server.
Autenticazione con chiavi SSH
L'autenticazione con chiavi è più sicura e più comoda rispetto all'uso delle password. Invece di ricordare e digitare una password ogni volta, usi una coppia di chiavi crittografiche.
Come funziona
Una coppia di chiavi SSH è composta da una chiave privata (che resta sul tuo computer e non viene mai condivisa) e una chiave pubblica (che viene collocata sul server). Quando ti connetti, il server invia una sfida che solo il proprietario della chiave privata può risolvere. Il tuo client SSH usa la chiave privata per firmare, il server verifica la firma con la chiave pubblica e, se corrispondono, l'autenticazione ha successo. La password non viene mai trasmessa sulla rete.
Generare una chiave
Su Linux e macOS usa il comando ssh-keygen per generare una chiave. Consigliamo l'algoritmo Ed25519, che è moderno, veloce e sicuro. Il comando chiederà dove salvare la chiave (per impostazione predefinita ~/.ssh/id_ed25519) e se vuoi una passphrase (una password aggiuntiva per proteggere la chiave, consigliata). Verranno creati due file: la chiave privata e la chiave pubblica con estensione .pub.
Collocare la chiave pubblica sul server
La chiave pubblica va copiata sul server nel file ~/.ssh/authorized_keys dell'utente con cui ti connetti. Il modo più semplice è il comando ssh-copy-id, che copia automaticamente la tua chiave pubblica sul server. In alternativa, puoi aggiungere manualmente il contenuto del file .pub al file authorized_keys sul server.
Disabilitare la password
Una volta confermato che le chiavi SSH funzionano, è consigliabile disabilitare l'autenticazione con password sul server modificando il file sshd_config e impostando PasswordAuthentication su no. Questo aumenta enormemente la sicurezza perché i bot non possono indovinare la password: l'unico modo per accedere è possedere la chiave privata.
I comandi SSH più importanti
Ecco i comandi che userai più spesso sul server.
Navigazione e file
- ls -la: Elenca i file nella directory con informazioni dettagliate (permessi, proprietario, dimensione, data).
- cd /percorso/della/directory: Cambia la directory attiva.
- pwd: Mostra la directory corrente.
- cat file.txt: Visualizza il contenuto di un file nel terminale.
- nano file.txt: Apre un file nell'editor nano per modificarlo. Ctrl+O per salvare, Ctrl+X per uscire.
- cp origine destinazione: Copia un file. Aggiungi -r per le directory.
- mv origine destinazione: Sposta o rinomina un file o una directory.
- rm file: Elimina un file. rm -rf directory elimina una directory con tutto il suo contenuto (attenzione con questo comando!).
- chmod 755 file: Modifica i permessi di un file (755 = proprietario tutto, gruppo/altri lettura ed esecuzione).
- chown utente:gruppo file: Modifica la proprietà di un file.
Sistema e servizi
- top o htop: Mostra i processi attivi e l'uso delle risorse (CPU, RAM) in tempo reale.
- df -h: Mostra l'uso del disco in un formato leggibile.
- free -h: Mostra l'uso della memoria (RAM).
- systemctl status nginx: Mostra lo stato di un servizio (nginx, mysql, php-fpm, ecc.).
- systemctl restart nginx: Riavvia un servizio.
- journalctl -u nginx -f: Mostra i log di un servizio in tempo reale.
- tail -f /var/log/syslog: Mostra il log di sistema in tempo reale.
Rete
- ping dominio.com: Testa la connessione a un server o a un dominio.
- curl -I https://dominio.com: Mostra gli header HTTP di un sito (utile per verificare reindirizzamenti e header).
- netstat -tulpn: Mostra tutte le connessioni di rete attive e le porte in ascolto.
- dig dominio.com: Una query DNS che mostra i record DNS di un dominio.
Trasferimento di file
Il protocollo SSH consente anche il trasferimento sicuro di file tra il tuo computer e il server.
SCP (Secure Copy)
SCP usa SSH per copiare i file. Per caricare un file sul server usa scp file_locale utente@server:/percorso/sul/server. Per scaricare dal server usa scp utente@server:/percorso/sul/server/file ./directory_locale. Per copiare intere directory aggiungi il flag -r. SCP è semplice, ma non offre funzionalità avanzate come la ripresa dei trasferimenti interrotti.
SFTP (SSH File Transfer Protocol)
SFTP è un protocollo interattivo di trasferimento file che gira su SSH. Puoi usarlo da terminale con il comando sftp utente@server oppure tramite client grafici come FileZilla, WinSCP o Cyberduck. SFTP offre la navigazione tra le directory, l'esplorazione dei file, l'upload/download con ripresa dei trasferimenti interrotti e la gestione dei permessi, il tutto su una connessione SSH sicura.
rsync
rsync è uno strumento di sincronizzazione file più avanzato che trasferisce solo le modifiche (il delta) invece dei file interi. È ideale per il backup e la sincronizzazione di grandi quantità di dati. Il comando rsync -avz --progress origine utente@server:/destinazione sincronizza una directory locale con una sul server, trasferendo solo i file modificati. rsync supporta anche la compressione durante il trasferimento e la ripresa delle operazioni interrotte.
Raccomandazioni di sicurezza per SSH
- Usa le chiavi SSH: Preferisci sempre le chiavi alle password. Disabilita l'autenticazione con password dopo aver configurato le chiavi.
- Limita l'accesso: Usa AllowUsers o AllowGroups in sshd_config per limitare quali utenti possono accedere via SSH.
- Fail2ban: Installa fail2ban, che blocca automaticamente gli indirizzi IP dopo un certo numero di tentativi di accesso falliti.
- Aggiorna regolarmente: Mantieni aggiornato il server SSH (OpenSSH) perché di tanto in tanto vengono scoperte e corrette vulnerabilità di sicurezza.
- Proteggi la chiave privata: Non condividere mai la chiave privata. Imposta una passphrase sulla chiave. Conserva un backup in un luogo sicuro.
- Disabilita l'accesso root: Imposta PermitRootLogin su no o prohibit-password e usa sudo per le attività amministrative.
Conclusione
SSH è lo strumento fondamentale per la gestione dei server, e ogni proprietario di VPS o server dedicato dovrebbe imparare i comandi SSH di base. Inizia con compiti semplici come consultare i log e riavviare i servizi, poi passa gradualmente a configurazioni avanzate come le chiavi SSH e la configurazione del firewall. Con la pratica, la riga di comando diventa più veloce ed efficiente di qualsiasi interfaccia grafica. In BeoHosting, tutti i nostri piani VPS includono l'accesso SSH e il pieno controllo root, e il nostro team di supporto è sempre disponibile per aiutarti con la configurazione e l'impostazione della sicurezza.
BeoHosting Team
10+ anni di esperienza — Specialisti di web hosting e infrastrutture
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Ultimo aggiornamento: