Sistemi operativi

Comandi SSH per gestire un server Linux: guida essenziale per webmaster

  • 19 minuti di lettura
  • Team Hostragons
Comandi SSH per gestire un server Linux: guida essenziale per webmaster

Gestire un server Linux con i comandi SSH significa collegarsi in modo sicuro a un server remoto e amministrare da terminale file, servizi, utenti, log, sicurezza e prestazioni. Per le operazioni di base ci si connette con ssh utente@ip-server; poi, con comandi come ls, cd, pwd, cp, mv, rm, nano, systemctl, journalctl, top, df, du, chmod, chown, tar, scp e rsync, è possibile pubblicare un sito, diagnosticare errori, riavviare servizi e organizzare backup. Questa guida spiega con esempi pratici i comandi Linux più utili per webmaster che lavorano ogni giorno con hosting, VPS o server dedicati.

Gestire un sito soltanto dal pannello di controllo può bastare in molti casi, ma quando il traffico cresce, serve una configurazione personalizzata, bisogna leggere i log o intervenire in emergenza, conoscere SSH diventa un vantaggio enorme. Se, ad esempio, un sito WordPress restituisce un errore 500, invece di aspettare che il pannello si carichi o aprire ticket alla cieca, puoi controllare in pochi minuti lo spazio disco, lo stato di PHP-FPM, i log di Nginx o Apache e i file modificati di recente. Questo riduce i tempi di fermo e aiuta a proteggere anche il rendimento SEO. Se sei ancora nella fase di scelta dell’infrastruttura, può essere utile confrontare le opzioni VPS Server e Web Hosting in base alle esigenze reali del progetto.

Che cos’è SSH e perché è importante per un webmaster?

SSH è l’acronimo di Secure Shell ed è un protocollo sicuro usato per stabilire una connessione cifrata verso un server remoto. Mentre FTP serve principalmente a trasferire file, SSH ti mette a disposizione la riga di comando del server. In questo modo puoi entrare nella directory principale del sito, correggere permessi, riavviare servizi, controllare il firewall, esportare un database e seguire i log in tempo reale.

Per un webmaster, conoscere SSH offre tre vantaggi fondamentali. Il primo è la velocità: invece di scaricare grandi archivi dal pannello, puoi comprimerli direttamente sul server in pochi secondi o minuti. Il secondo è la visibilità: log, uso della CPU, consumo di RAM e stato del disco sono consultabili senza filtri. Il terzo è il controllo: problemi di permessi, servizi bloccati o configurazioni errate possono essere risolti senza attendere. Soprattutto su VPS, server cloud e server dedicati, SSH non è un extra tecnico, ma una competenza quasi indispensabile per amministrare l’ambiente in modo autonomo.

Cosa sapere prima di collegarsi via SSH

Per stabilire una connessione SSH servono di solito tre informazioni: indirizzo IP del server o nome di dominio, nome utente e metodo di autenticazione. La porta predefinita sulla maggior parte dei sistemi Linux è la 22, ma per motivi di sicurezza può essere stata modificata. Il comando più semplice è ssh utente@ip-server. Se la porta è diversa, ad esempio 2222, il collegamento avviene con ssh -p 2222 utente@ip-server.

Al primo accesso, il terminale ti chiederà di confermare l’impronta digitale del server. Questo passaggio serve a verificare che tu stia davvero comunicando con il server corretto. Digitando yes, il riferimento del server viene salvato nel file known_hosts del tuo computer. Se in futuro il server cambia, l’IP viene riassegnato o la chiave host viene rigenerata, potresti ricevere un avviso di sicurezza. In quel caso non ignorarlo automaticamente: verifica prima che l’host sia davvero quello giusto.

Differenza tra accesso con password e chiave SSH

L’accesso con password è comodo e immediato, ma più esposto ad attacchi brute force, soprattutto se la password è debole o riutilizzata. La chiave SSH funziona invece con una chiave privata sul tuo computer e una chiave pubblica sul server, offrendo un livello di sicurezza più alto. Per creare una chiave moderna puoi usare ssh-keygen -t ed25519. Per copiare la chiave pubblica sul server, il metodo più pratico è ssh-copy-id utente@ip-server. Una volta configurato l’accesso con chiave, disattivare il login tramite password aumenta sensibilmente la sicurezza del server.

Differenza tra accesso con password e chiave SSH
MetodoVantaggioRischioUso consigliato
SSH con passwordConfigurazione rapidaRischio elevato con password deboliAccesso temporaneo e prima configurazione
Chiave SSHPiù sicura e adatta all’automazioneRischiosa se la chiave privata non viene protettaGestione continuativa del server
Porta personalizzataRiduce le scansioni automatiche dei botDa sola non basta come misura di sicurezzaInsieme a chiavi SSH e firewall
Login root disattivatoRiduce l’abuso di privilegiUna configurazione sudo errata può complicare l’accessoServer in produzione

Comandi base per navigare e listare file

I primi comandi da imparare nel terminale Linux servono a capire dove ti trovi, spostarti tra le directory e visualizzare i file. pwd mostra il percorso corrente. cd /var/www/html ti porta nella directory radice del sito web. cd .. sale di un livello, mentre cd senza argomenti riporta alla home dell’utente. ls elenca file e cartelle; ls -la mostra anche i file nascosti, insieme a permessi, proprietario, dimensione e data di modifica.

Per un webmaster è importante trovare rapidamente file come .htaccess, wp-config.php, robots.txt, sitemap.xml e index.php. Il comando ls -lah visualizza le dimensioni in formato leggibile: invece di 1048576, vedrai 1.0M. Se in una directory ci sono molti file, ls -lt ordina gli elementi mettendo in alto quelli modificati più di recente. È molto utile dopo un sospetto attacco, dopo l’installazione di un plugin o quando devi capire quali file sono stati toccati da un aggiornamento.

Scenario pratico: controllare la directory del sito

I file di un sito si trovano spesso sotto /var/www, /home/utente/public_html oppure /usr/share/nginx/html. Un flusso di lavoro tipico può essere questo: usa pwd per capire dove sei, entra nella directory del sito con cd /var/www/nomesito, elenca i file con ls -lah e controlla la dimensione totale con du -sh .. Se ospiti più siti sullo stesso server, separarli per utente e directory è una buona pratica sia per la sicurezza sia per la manutenzione. Per la gestione del dominio puoi procedere insieme alla guida Query di dominio, mentre per la pubblicazione iniziale del sito può esserti utile Installazione dell'Hosting.

Operazioni su file e cartelle: creare, copiare, spostare, eliminare

Per creare un file vuoto si usa touch file.txt, mentre per creare una cartella si usa mkdir nome-cartella. Se devi creare più livelli di directory con un solo comando, puoi scrivere mkdir -p backup/2026/gennaio. La copia di un file avviene con cp origine destinazione; per copiare una cartella si usa cp -r cartella-origine cartella-destinazione. Per spostare o rinominare file e directory si usa mv vecchio-nome nuovo-nome.

I comandi di eliminazione richiedono particolare attenzione. rm file.txt elimina un singolo file, rm -r nome-cartella elimina una cartella con il suo contenuto. rm -rf forza la rimozione senza chiedere conferma e, se eseguito nella directory sbagliata, può causare perdite gravissime. Su un server in produzione, prima di usare rm -rf, controlla sempre la posizione con pwd e verifica il bersaglio con ls. Prima di operazioni critiche, creare un backup rapido con tar o rsync può evitare ore di ripristino dopo un errore di pochi secondi.

L’abitudine più sicura: spostare prima di cancellare

Per chi sta iniziando, il metodo più prudente non è eliminare subito, ma spostare il file in una cartella di quarantena. Ad esempio, con mkdir /root/quarantena e mv file-sospetto.php /root/quarantena/ puoi isolare il file senza perderlo. Se il sito continua a funzionare correttamente, potrai cancellarlo in modo definitivo in un secondo momento. Questo approccio è particolarmente utile durante la pulizia di malware, la rimozione di plugin e i cambi di tema.

Comandi per visualizzare e modificare il contenuto dei file

Per leggere un file intero puoi usare cat file.txt, mentre per sfogliarlo pagina per pagina è meglio less file.txt. Nei log molto grandi, cat può riempire inutilmente il terminale; per questo less è più pratico. Per vedere le prime righe di un file si usa head file.txt, per le ultime righe tail file.txt. Per seguire un log in tempo reale, tail -f /var/log/nginx/error.log è uno dei comandi più preziosi.

Per modificare file da terminale puoi usare editor come nano, vim o micro. Per i principianti, nano è di solito la scelta più semplice. Con nano .htaccess apri il file, modifichi il contenuto, salvi con Ctrl+O ed esci con Ctrl+X. Quando modifichi configurazioni PHP, server block di Nginx, virtual host di Apache o robots.txt, ricordati che anche un piccolo errore di sintassi può rendere il sito irraggiungibile. Prima di cambiare un file, è buona norma creare una copia con cp file file.bak.

Gestione di permessi e proprietà: chmod e chown

Sui server Linux, i permessi dei file sono fondamentali sia per il funzionamento del sito sia per la sicurezza. Il comando chmod modifica i permessi, mentre chown cambia proprietario e gruppo. In un sito web classico, valori comuni sono 755 per le cartelle e 644 per i file. Ad esempio, chmod 644 wp-config.php imposta i permessi del file in modo più sicuro. Per applicare permessi alle cartelle in modo ricorsivo si usa la logica find . -type d -exec chmod 755 {} \;; per i file, find . -type f -exec chmod 644 {} \;.

Sul lato proprietà, sono comuni comandi come chown -R www-data:www-data /var/www/nomesito, ma il valore corretto dipende dalla distribuzione e dal web server. Su Ubuntu, Apache e Nginx usano spesso www-data; in ambienti simili a cPanel, ogni sito può avere un utente dedicato. Una proprietà errata può causare problemi di upload, errori 403 o impossibilità di aggiornare plugin e temi. Permessi troppo larghi, come 777, possono sembrare una scorciatoia per “far funzionare tutto”, ma creano rischi di sicurezza. In particolare, nelle directory di upload è importante impedire l’esecuzione di file e limitare i permessi di scrittura.

Comandi base per controllare disco, RAM e CPU

Quando un sito rallenta o smette di rispondere, la prima area da controllare è l’uso delle risorse. df -h mostra quanto spazio è occupato nelle partizioni del disco. Se la partizione root arriva al 100%, i servizi non riescono più a scrivere log, il database può bloccarsi e il sito può generare errori 500. du -sh * riassume la dimensione delle cartelle nella directory corrente. Per trovare log, cache o backup molto pesanti puoi usare du -ah /var/www | sort -h | tail.

Per RAM e processore si usano top o htop. Se htop non è installato, puoi aggiungerlo con apt install htop oppure dnf install htop, a seconda della distribuzione. free -m mostra lo stato di RAM e swap. uptime indica da quanto tempo il sistema è acceso e riporta i valori di load average. Su un server con un solo core, un load costantemente sopra 1 può segnalare un problema; su server multi-core, il valore va confrontato con il numero di core disponibili. Se l’aumento del traffico è diventato stabile, potrebbe servire un piano più potente o un lavoro di ottimizzazione; in questa fase puoi valutare Linux VPS e Hosting Aziendale.

Gestione dei servizi: controllare Apache, Nginx, PHP e MySQL con systemctl

Nelle distribuzioni Linux moderne, la gestione dei servizi avviene quasi sempre con systemctl. Per vedere lo stato di un servizio si usa systemctl status nginx, per riavviarlo systemctl restart nginx, per ricaricare la configurazione senza un riavvio completo systemctl reload nginx. Per Apache il servizio può chiamarsi apache2 o httpd; per PHP-FPM può essere php8.2-fpm o un nome simile legato alla versione; per MySQL può essere mysql oppure mariadb.

Prima di ogni riavvio, è buona abitudine testare la configurazione. Per Nginx si usa nginx -t, per Apache apachectl configtest. Se il test fallisce e fai comunque restart, rischi di mandare offline il sito. Ad esempio, se nella configurazione di Nginx manca un punto e virgola, nginx -t mostrerà l’errore e il numero di riga. Prima correggi il problema, poi esegui systemctl reload nginx: è molto più sicuro.

Checklist rapida dei servizi per webmaster

  • Se il sito non si apre, prima di tutto controlla sul server systemctl status servizio-web invece di affidarti solo al browser o al ping.
  • In caso di errore 502, verifica lo stato di PHP-FPM e il log errori di Nginx.
  • Se compare un errore di connessione al database, controlla systemctl status mysql e lo spazio disco.
  • Se hai modificato una configurazione, quando possibile usa reload invece di restart.
  • Prima di ogni modifica, crea una copia .bak del file interessato.

Analisi dei log: trovare la causa di un errore in pochi minuti

I file di log sono la scatola nera del server. Per Nginx si consultano spesso /var/log/nginx/access.log e /var/log/nginx/error.log; per Apache, /var/log/apache2/access.log e /var/log/apache2/error.log. I log di PHP-FPM possono trovarsi in /var/log/php8.2-fpm.log oppure dentro journalctl, a seconda della distribuzione. I log di MySQL sono spesso in /var/log/mysql/error.log.

Il comando journalctl -xe mostra gli errori recenti legati ai servizi di sistema. Per un servizio specifico puoi usare journalctl -u nginx -n 100, che elenca le ultime 100 righe di Nginx. Per seguire in tempo reale un servizio PHP-FPM, journalctl -u php8.2-fpm -f è molto utile. Per cercare una parola nei log si usa grep. Ad esempio, grep 500 access.log aiuta a individuare le richieste con codice 500. grep -i error file.log esegue una ricerca senza distinguere maiuscole e minuscole.

Dal punto di vista SEO, l’analisi dei log non serve solo a risolvere errori: è utile anche per capire crawl budget e comportamento dei bot. Dai log di accesso puoi vedere quali pagine visita Googlebot, quali URL generano molti 404 e quali risorse rispondono lentamente. Per rendere più regolari i controlli tecnici, puoi affiancare l’analisi dei log ai contenuti hosting SEO compatibile e Ottimizzazione della velocità del sito web.

Comandi di ricerca, filtro e trattamento del testo

Comandi di ricerca, filtro e trattamento del testo

Per cercare file o testo sul server, find, grep, awk e sed sono strumenti molto potenti. find /var/www -name wp-config.php cerca un file specifico. find . -type f -mtime -1 mostra i file modificati nelle ultime 24 ore. Questo comando è prezioso quando sospetti modifiche non autorizzate. grep -R base64_decode . cerca nella directory corrente tutti i file che contengono base64_decode; questa stringa non indica sempre codice malevolo, ma compare spesso in script PHP offuscati usati in attacchi.

Nell’analisi dei log, awk permette di estrarre colonne specifiche. Ad esempio, in un access log puoi isolare la colonna degli IP, poi usare sort e uniq -c per contare quali indirizzi inviano più richieste. Analisi di questo tipo aiutano a riconoscere in anticipo traffico bot anomalo, tentativi brute force o comportamenti simili a un DDoS. A un livello più avanzato, questi dati possono essere integrati con fail2ban, rate limiting e soluzioni WAF.

Trasferimento file: scp, sftp e rsync

SSH non serve solo a eseguire comandi, ma anche a trasferire file. Con scp file-locale utente@ip-server:/directory/destinazione invii un file dal tuo computer al server. Per scaricare un file dal server al computer, puoi usare scp utente@ip-server:/percorso/file ./. Per cartelle grandi, rsync è spesso più efficiente di scp perché non ritrasferisce i file rimasti invariati.

Il comando rsync -avz origine/ utente@ip-server:/destinazione/ esegue un trasferimento in modalità archivio, con compressione e output dettagliato. Il parametro --delete cancella nella destinazione i file che non esistono più nell’origine: è potente, ma va usato con cautela. Per migrare WordPress, sincronizzare un ambiente staging con quello di produzione o replicare dati verso un server di backup, rsync è una soluzione molto solida. Se stai configurando SSL o passando a HTTPS, prima di trasferire file assicurati di avere chiari certificati e redirect; il contenuto Certificato SSL può aiutarti in questa fase.

Comandi SSH per backup e ripristino

Il backup è l’assicurazione della gestione server. Per salvare i file puoi usare tar -czf backup-sito.tar.gz /var/www/nomesito. Questo comando trasforma la directory in un archivio compresso gzip. Per estrarlo si usa tar -xzf backup-sito.tar.gz. Su siti grandi è più sicuro conservare il backup fuori dalla directory pubblica e, se possibile, trasferirlo su uno storage remoto.

Per il backup del database, il comando più comune è mysqldump -u utente -p nome_database > backup.sql. Per ripristinare si usa mysql -u utente -p nome_database < backup.sql. Con database molto grandi, l’operazione può durare a lungo; screen o tmux permettono al processo di continuare anche se la connessione SSH si interrompe. Ad esempio, con screen -S backup apri una sessione, avvii il backup e poi ti stacchi con Ctrl+A seguito da D. In seguito puoi rientrare con screen -r backup.

Impostazioni SSH critiche per la sicurezza

La sicurezza SSH è la porta d’ingresso della sicurezza del server. La prima raccomandazione è disattivare il login diretto dell’utente root. Al suo posto si crea un utente normale con privilegi sudo. adduser webmaster aggiunge l’utente, mentre usermod -aG sudo webmaster assegna i permessi sudo. Poi si modifica la configurazione SSH nel file /etc/ssh/sshd_config. Opzioni come PermitRootLogin no e PasswordAuthentication no possono essere usate insieme all’accesso basato su chiave.

Dopo ogni modifica è fondamentale testare la configurazione di sshd e provare una nuova connessione da un secondo terminale senza chiudere la sessione già aperta. Se commetti un errore, potresti bloccarti fuori dal server. Lato firewall, comandi come ufw allow 2222/tcp e ufw enable permettono di aprire soltanto le porte necessarie. Se hai cambiato la porta SSH, però, verifica di riuscire a connetterti dalla nuova porta prima di chiudere la vecchia sessione.

Checklist minima di sicurezza

  • Usa una password forte o, meglio ancora, una chiave SSH.
  • Disattiva il login root e crea un utente con privilegi sudo.
  • Chiudi i servizi non necessari e apri solo le porte indispensabili.
  • Aggiorna regolarmente i pacchetti di sistema: apt update e apt upgrade.
  • Controlla i log con regolarità; per IP sospetti valuta fail2ban.
  • Non lasciare i backup in un’unica copia sullo stesso server.

Comandi per gestione pacchetti e aggiornamenti

Sui sistemi basati su Ubuntu e Debian si usa apt; su distribuzioni RHEL-like come AlmaLinux e Rocky Linux si usano dnf o yum. Su Ubuntu, apt update aggiorna l’elenco dei pacchetti disponibili, mentre apt upgrade aggiorna i pacchetti installati. Per installare un pacchetto specifico puoi usare apt install nginx; per rimuoverlo, apt remove nome-pacchetto. Sui sistemi RHEL-based, dnf update e dnf install nome-pacchetto svolgono funzioni simili.

Su un server in produzione, gli aggiornamenti non andrebbero eseguiti a caso, ma durante una finestra di manutenzione. Aggiornamenti di PHP, MySQL, OpenSSL e del web server possono influire sul comportamento del sito. Le patch di sicurezza critiche non devono essere rimandate troppo, ma un approccio professionale prevede backup prima dell’intervento, controllo delle configurazioni e, quando possibile, test in ambiente staging.

Esempio di procedura di emergenza per webmaster

Immagina di svegliarti e scoprire che il sito non si apre. Invece di andare nel panico, la soluzione più rapida è seguire una procedura standard. Prima collegati via SSH. Con uptime verifica se il server risponde e controlla il load average. Con df -h guarda lo spazio disco. Con free -m e top verifica RAM e CPU. Poi controlla lo stato del servizio web con systemctl status nginx oppure systemctl status apache2. Se l’errore è 502, verifica PHP-FPM. Se il problema riguarda il database, controlla systemctl status mysql e il relativo file di log.

Subito dopo, leggi gli ultimi errori con tail -n 100 log-errori. Se il problema è iniziato dopo un aggiornamento di plugin o tema, usa ls -lt per vedere i file modificati più di recente. Se necessario, rinomina temporaneamente la cartella del plugin o del tema interessato. Se il disco è pieno, identifica vecchi log o backup inutili, ma prima di cancellare verifica sempre cosa sono. Con questi passaggi, nella maggior parte dei casi puoi restringere la causa del disservizio in 5-15 minuti.

Errori comuni quando si usano i comandi SSH

L’errore più diffuso è copiare e incollare comandi da Internet senza capirli. Non ogni comando trovato in una guida è adatto al tuo server. In particolare rm -rf, chmod -R 777, chown -R e i comandi di cancellazione database comportano rischi seri. Il secondo errore è lavorare sempre come root. Usare sudo solo quando serve riduce la probabilità di modificare per sbaglio file di sistema.

Il terzo errore è cambiare file senza backup. Anche una piccola modifica in un file di configurazione può mettere offline il sito. Il quarto errore è riavviare servizi in continuazione senza leggere i log. Un restart può dare un sollievo temporaneo, ma nascondere la causa reale. Il quinto errore è trascurare del tutto gli aggiornamenti di sicurezza. Versioni obsolete di PHP, CMS o pacchetti server aumentano la superficie d’attacco.

Tabella riepilogativa dei comandi SSH essenziali

Tabella riepilogativa dei comandi SSH essenziali
OperazioneComandoQuando usarlo?
Connessionessh utente@ip-serverPer collegarsi al server da terminale
Vedere la directorypwdPer sapere in quale cartella ti trovi
Elencare filels -lahPer vedere file, permessi, proprietario e dimensioni
Controllo discodf -hPer verificare quanto spazio è occupato
Dimensione cartelledu -sh *Per capire quali cartelle occupano più spazio
Stato serviziosystemctl status nginxPer controllare se il web server è attivo
Monitoraggio logtail -f errore.logPer seguire gli errori in tempo reale
Backup filetar -czf backup.tar.gz cartellaPer comprimere i file del sito
Trasferimentorsync -avz origine destinazionePer sincronizzare file o cartelle grandi
Modifica permessichmod 644 filePer regolare i permessi di accesso a un file

Conclusione: conoscere SSH rende più veloce il lavoro del webmaster

Gestire un server Linux con i comandi SSH non è una competenza riservata solo agli amministratori di sistema: è una base importante anche per webmaster che seguono progetti web seri. Con i comandi giusti, gestione file, analisi dei log, controllo dei servizi, backup e sicurezza diventano attività più rapide, misurabili e ripetibili. All’inizio bastano pochi comandi; con il tempo, unirli a buone abitudini operative ti renderà più autonomo e preparato.

Quando pianifichi su Hostragons la tua infrastruttura hosting, VPS, dominio e SSL, valuta insieme accesso SSH, backup, sicurezza e prestazioni. Scegliere il tipo di server più adatto o rafforzare un ambiente già esistente richiede una valutazione calma, basata su requisiti tecnici reali. Le guide Hostragons possono aiutarti a confrontare le alternative e a costruire una base più stabile per il tuo progetto.

Domande frequenti

Per gestire un server Linux con i comandi SSH devo essere root?

No. Anzi, sui server in produzione non è consigliabile usare direttamente root. È più sicuro collegarsi con un utente normale dotato di privilegi sudo ed eseguire le operazioni amministrative con sudo solo quando necessario.

Quali comandi SSH dovrebbe imparare per primi un webmaster principiante?

Le priorità sono ssh, pwd, cd, ls -lah, cp, mv, rm, nano, df -h, du -sh, top, systemctl, tail -f, grep, tar, scp e rsync. Questi comandi coprono gran parte delle attività quotidiane su file, servizi, log e backup.

Perché una connessione SSH viene rifiutata?

Le cause più comuni sono IP o porta errati, servizio SSH non attivo, blocco del firewall, nome utente sbagliato, file chiave non corretto o PasswordAuthentication disattivato sul server. Conviene controllare prima porta, utente e stato del servizio.

Usare chmod 777 è sicuro?

In genere no. chmod 777 rende un file o una cartella leggibile, scrivibile ed eseguibile da chiunque. Questo è rischioso soprattutto nelle directory web. Nella maggior parte degli scenari, 755 per le cartelle e 644 per i file sono valori di partenza molto più sicuri.

È meglio fare backup via SSH o dal pannello di controllo?

Entrambi i metodi possono essere utili. I backup da pannello sono pratici, mentre quelli via SSH sono più flessibili e facili da automatizzare. Per siti grandi, tar, mysqldump e rsync offrono maggiore controllo; la strategia migliore resta avere backup regolari, testati e conservati anche su una destinazione remota.

Condividi questo articolo:

Team Hostragons

Guide aggiornate dal nostro team di esperti su hosting, server e nomi di dominio. Troviamo insieme la soluzione ideale per il tuo progetto.

Contattaci