Comando ssh in Linux: accesso remoto, porte e verifica della chiave host

ssh è il client OpenSSH per accedere a un server remoto o eseguirvi un comando tramite una connessione cifrata. Specifica indirizzo e account del server e, al primo collegamento, verifica l'impronta della sua chiave host attraverso un canale fidato prima di accettarla.

SSH significa Secure Shell. La verifica della chiave host identifica il server; l'autenticazione con password o chiave pubblica identifica invece l'utente. Sono controlli distinti: la cifratura del traffico non sostituisce la verifica dell'identità del destinatario.

Sintassi e preparazione

ssh [options] [user@]host [remote command]

I nomi tra parentesi sono segnaposto. In user@host, user è l'account sul server, non necessariamente quello del computer locale. Sostituisci alice, user e i nomi server.example.com o server.example.test degli esempi con i valori effettivi; non sono server di prova disponibili per l'accesso.

Servono il client SSH locale, un servizio SSH raggiungibile sul server, un account autorizzato e il metodo di autenticazione ammesso dall'amministratore. Controlla la versione con ssh -V e le opzioni locali con man ssh. Senza una diversa configurazione, la porta è 22; un file di configurazione può impostare account, porta o altri parametri per uno specifico host.

Esempi di accesso e comando remoto

Accesso remoto. Dopo avere ottenuto l'impronta della chiave host da una fonte fidata, avvia il collegamento:

ssh alice@server.example.com

Se la verifica del server e l'autenticazione dell'utente riescono, normalmente si apre una shell sul server. I comandi digitati lì agiscono sul sistema remoto con i permessi di alice. Per uscire normalmente dalla shell usa exit; distingui sempre la sessione remota dal terminale locale.

Porta diversa. Se il servizio è configurato sulla porta 2222, specificala con -p minuscola:

ssh -p 2222 alice@server.example.com

Questa opzione sceglie la porta a cui collegarsi: non cambia la porta di ascolto del server né apre un firewall. Verifica il valore con l'amministratore invece di provare una porta arbitraria.

Eseguire un solo comando. Passando un comando dopo la destinazione, SSH lo esegue sul server invece di aprire una normale shell interattiva:

ssh alice@server.example.com hostname

Il risultato atteso è il nome host del sistema remoto, che può differire dal nome DNS usato per raggiungerlo. Al termine del comando la sessione normalmente si chiude; eventuali inoltri attivi possono mantenerla aperta. SSH restituisce lo stato di uscita del comando remoto, oppure 255 in caso di errore SSH; un comando remoto può a sua volta restituire 255, quindi considera anche il messaggio diagnostico.

Nei comandi più complessi, virgolette ed espansioni possono essere interpretate prima dalla shell locale e poi da quella remota. L'esempio usa intenzionalmente un comando semplice: controlla quale macchina deve interpretare ogni argomento prima di inviare operazioni che modificano dati.

Verificare il server al primo collegamento

Per un server non ancora riconosciuto può apparire una richiesta di conferma. La forma precisa dipende da versione e configurazione; se la chiave è già fidata, la domanda può non comparire.

ssh user@server.example.test

Esempio illustrativo di messaggio: SHA256:... rappresenta un'impronta omessa, non un valore da accettare.

The authenticity of host 'server.example.test' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  1. Controlla di avere indicato server, porta e account corretti.
  2. Ottieni dall'amministratore l'impronta della chiave host tramite un canale indipendente e già fidato, per esempio una console amministrativa verificata.
  3. Confronta tipo di chiave e impronta completa con quelli mostrati dal client.
  4. Solo se coincidono, conferma secondo il messaggio del client. Se non puoi verificarli, interrompi il collegamento.

Con la normale politica di conferma, accettare la chiave la registra nel file locale ~/.ssh/known_hosts. Questa registrazione serve ai confronti successivi: rispondere yes senza il confronto iniziale non dimostra che il server sia quello previsto.

Se in seguito la chiave risulta cambiata, fermati e verifica una reinstallazione, una rotazione delle chiavi o un indirizzo errato con l'amministratore. È possibile anche un tentativo di impersonare il server. Non cancellare alla cieca la vecchia voce e non disattivare la verifica per far sparire l'avviso; aggiorna soltanto la voce corretta dopo avere verificato la nuova identità.

Opzioni principali

Opzione Funzione
-p porta Seleziona la porta del servizio SSH remoto.
-i file_chiave Indica un file di identità da usare per l'autenticazione a chiave pubblica, normalmente la chiave privata.
-J host_salto Raggiunge la destinazione tramite un host di salto.
-L porta_locale:host:porta Inoltra una porta locale verso host e porta raggiunti dal lato remoto.
-N Non esegue un comando remoto; utile per connessioni dedicate all'inoltro.
-v Mostra dettagli sulla connessione e sull'autenticazione per la diagnosi.

-i seleziona un'identità ma non garantisce da solo che il server la accetti. Con l'autenticazione a chiave pubblica, la chiave pubblica deve essere autorizzata per l'account remoto; la chiave privata resta sotto il controllo dell'utente e non va inviata al server o condivisa. Proteggi file, eventuale passphrase e copie di backup; controlla i permessi se il client rifiuta la chiave.

Con -L, l'indirizzo di ascolto determina chi può usare la porta locale. La forma completa ammette indirizzo_bind:porta_locale:host:porta: un bind esplicito su 127.0.0.1 limita l'ascolto al loopback IPv4, mentre indirizzi generici possono esporlo ad altre macchine. Il tratto cifrato è quello SSH tra client e server; il collegamento dal server alla destinazione dell'inoltro dipende dal protocollo di quel servizio.

Diagnosticare gli errori senza confondere le fasi

  • Nome non risolto: controlla nome e DNS, cioè il sistema che traduce i nomi in indirizzi.
  • Connessione rifiutata o scaduta: verifica indirizzo, porta, raggiungibilità TCP e servizio SSH. Un timeout non dimostra da solo quale apparato blocchi il traffico.
  • Avviso sulla chiave host: verifica l'identità del server prima di procedere con l'autenticazione.
  • Autenticazione negata: controlla account, metodo ammesso, chiave autorizzata e permessi; raggiungere la porta non significa avere il diritto di accedere.

ssh -v user@host, con destinazione reale, aiuta a individuare dove il processo si interrompe. Prima di condividere i log, rimuovi nomi host, account, percorsi e altri dettagli riservati. Per un host con una porta specifica, mantieni anche la relativa opzione -p durante la diagnosi.

Per esaminare la configurazione senza collegarti, OpenSSH offre ssh -F none -G -p 2222 alice@server.example.com: -F none esclude i file di configurazione e -G stampa i valori risultanti ed esce. In una verifica del 3 novembre 2026 con OpenSSH 10.3p1 di Git per Windows sono stati confermati account, porta 22 predefinita, porta 2222 esplicita e interpretazione di -N/-L. È stata una prova locale della configurazione, senza autenticazione, comando remoto o porta aperta; non una prova di connessione su Linux.

Domande frequenti

Che cosa fare se SSH avvisa che la chiave del server è cambiata?

Conferma la nuova impronta con l'amministratore attraverso un canale indipendente. Una reinstallazione o una sostituzione della chiave possono essere legittime, ma l'avviso può anche segnalare un server diverso o un attacco. Non eliminare la registrazione precedente e non disabilitare i controlli prima della verifica.

Documentazione ufficiale

Consulta il manuale ufficiale di ssh per sintassi e funzionamento del client e il manuale di ssh_config per configurazione, porta e verifica delle chiavi host.