Quando gestisci più macchine, le stesse opzioni SSH finiscono rapidamente nella cronologia: utente, porta, chiave privata, a volte un salto. Il file ~/.ssh/config sostituisce questa lunga riga con un nome corto, ad esempio ssh preprod.
Non è necessario modificare il server. Questa configurazione vive sul tuo computer e indica al client OpenSSH come raggiungere ogni macchina. Evita soprattutto di utilizzare la chiave o la porta sbagliata quando più ambienti si somigliano.
Crea un’entrata per server
Crea la cartella se non esiste, poi apri il file di configurazione:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Quindi, aggiungi un blocco per macchina. Qui, preprod è solo un alias locale. Sostituisci l’indirizzo, l’account, la porta e il percorso della chiave con i tuoi valori.
Host preprod
HostName 192.0.2.44
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_preprod
IdentitiesOnly yes
Potrai allora lanciare ssh preprod. HostName contiene il vero nome DNS o l’indirizzo IP, User l’account remoto e Port la porta SSH. IdentityFile seleziona la chiave privata attesa. Con IdentitiesOnly yes, il client non propone tutte le chiavi caricate dal tuo agente SSH, il che evita tentativi inutili su un server che limita le autenticazioni.
Se stai già usando una chiave, controlla prima che sia ben protetta. Una chiave privata non deve essere leggibile da altri account sul tuo computer:
chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config
La guida per generare una chiave SSH su Ubuntu copre la creazione della coppia di chiavi. Non copiare mai una chiave privata sul server. Solo la chiave pubblica ha il suo posto in ~/.ssh/authorized_keys lato remoto.
Aggiungi impostazioni comuni alla fine del file
Un file config può contenere più blocchi Host. Il client OpenSSH ritiene il primo valore trovato per la maggior parte delle opzioni. Posiziona quindi i server più specifici sopra e i valori generali alla fine.
Host production
HostName prod.example.net
User deploy
IdentityFile ~/.ssh/id_ed25519_production
IdentitiesOnly yes
Host backup
HostName backup.example.net
User backup
Port 2201
IdentityFile ~/.ssh/id_ed25519_backup
IdentitiesOnly yes
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
Il blocco Host * si applica a tutti gli alias. È adatto per le impostazioni davvero comuni, qui l’invio periodico di un segnale per rilevare una connessione bloccata. Evita di metterci una chiave o un utente se i tuoi server non usano tutti lo stesso account.
Puoi anche raggruppare host che seguono la stessa regola, con un modello come Host *.intra. Tieniti le eccezioni sopra a questo blocco. Un alias ambiguo o una regola generale posizionata troppo presto produce spesso un comportamento sorprendente.
Controlla la configurazione prima di collegarti
Il comando seguente visualizza la configurazione finale calcolata per un alias, senza aprire una sessione. È molto pratico dopo una modifica:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
Controlla che hostname, user e port corrispondano correttamente alla macchina target. Guarda anche il percorso restituito per identityfile. Se hai appena spostato una chiave, SSH potrebbe ancora puntare al vecchio file.
Quindi, fai un test semplice:
ssh preprod
ssh -v preprod
L’opzione -v mostra i passaggi di connessione e i file di configurazione letti. Non pubblicare questa uscita così com’è in un ticket o in una chat: potrebbe rivelare i tuoi nomi host, account e percorsi locali.
Quando il file config non è sufficiente
Un alias SSH risolve la ripetizione delle opzioni. Non corregge un server che rifiuta la tua chiave, una porta chiusa o una modifica dell’impronta dell’host. Se l’autenticazione ti richiede spesso la tua passphrase, usa ssh-agent piuttosto che rimuovere la passphrase dalla chiave.
Per raggiungere un servizio interno attraverso un bastione, mantieni un’entrata separata con ProxyJump e testala separatamente. Il tunnel SSH risponde a un’altra necessità: trasporta una porta locale o remota, non sostituisce la configurazione di un host.
- Proteggi
~/.sshconchmod 700 ~/.ssh. - Proteggi il file
confige ogni chiave privata conchmod 600. - Controlla l’alias con
ssh -G nome_aliasprima di una prima connessione. - Testa ogni nuovo server con il suo alias, poi mantieni le opzioni comuni in un blocco
Host *posizionato in fondo al file.
La documentazione ufficiale ssh_config(5) dettaglia ogni direttiva. Prenditi due minuti per rileggere l’uscita di ssh -G prima di usare un alias su una macchina di produzione: è più veloce che cercare di capire perché SSH ha scelto la chiave sbagliata.
