Marvin Pascale

[B.Log]

07 Giugno 2023

SSH config

ssh Oggi vi propongo un post un po’ più leggero, ma al contempo molto utile. La necessità di parlare di questo argomento nasce dal fatto che mi sono reso conto che alcune cose che io dò per scontato, poi così scontante non sono.

Connessioni SSH

Se lavori su infrastrutture GNU/Linux, SSH sarà lo strumento che utilizzerai più spesso e non tutti sanno che esiste uno strumento, offerto nativamente da openssh per gestire e personalizzare le connessioni.

Connettersi ad un server usando ssh è davvero semplice:

# ssh utente@server

tutto molto bello.

E se io ho tante connessioni?

Se devi gestire tanti server, non puoi ricordare tutti gli utenti, indirizzi e configurazioni e qui viene in aiuto il file .ssh/config. Nella home di ogni utente, all’interno della cartella nascosta .ssh è possibile creare il file config che con una sintassi molto amichevole permette di creare il nostro inventario.

Prendiamo come esempio il seguente file

Host server1
        Hostname 10.0.10.22
        User marvin

lanciando il comando ssh server1 ssh tradurrà l’alias in

ssh [email protected]

E se io dovessi fare qualcosa di più?

Se hai una porta ssh diversa dal default (es: 455) puoi aggiungere il parametro

Host server1
        Hostname 10.0.10.22
        User marvin
        port 455

Se quando ti connetti hai bisogno di un port forward, lo puoi specificare

Host server1
  Hostname 10.0.10.22
  User marvin
  port 455
  localForward 8080:localhost:80

e questo vale per tutte le configurazioni accettate da openssh.

Host server1
  Hostname 10.0.10.22
  User marvin
  Port 1500

Host cloud-server1
  Hostname 279.129.12.22
  User alice

Host cloud-server2
  Hostname 279.129.12.27

Host test-server
  Hostname test-server.local

Extra

Io ho a che fare con tantissimi server e spesso da clienti diversi ci sono gli stessi ip, devo saltare da un server all’altro, ecc. Ho creato una sorta di configurazione che uso per tutti i server, sommata alle configurazioni verticali

Host *
  ForwardAgent yes
  ControlMaster yes
  Compression yes
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

nel mio caso, ad ogni connessione, verrà passata la mia chiave ssh per eventuali altre connessioni a cascata, la connessione sarà ottimizzata, verrà utilizzata la compressione, non verrà verificata l’impronta del server e il risultato verrà inviato in /dev/null.

Per darvi un’idea di quante connessioni ho “inventoriato” negli anni

$ grep Host .ssh/config | wc -l
     1227

Per tutte le configurazioni ti consiglio di andare a leggere il manuale.


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: