SSH Config

Il file ~/.ssh/config contiene le configurazioni relative al client SSH, da non confondere con quello del server (/etc/ssh/sshd_config). E' possibile:

definire dei parametri per ogni host, in questo modo da usare degli alias

definire dei parametri di default

Parametri per host

Host befair2 bf2
User root
HostName befair2.befair.it

In questo modo e' possibile usare bf2 invece di root@befair2.befair.it per connettersi al server:

ssh bf2

Questi alias si possono usare anche in programmi che a loro volta usano SSH, ad esempio Git. Ad esempio per clonare un repository dal server, si puo' usare:

$ git clone bf2:git_repo

In alternativa a:

$ git clone root@befair2.befair.it:git_repo

Parametri di default

Host *
User root
ServerAliveInterval 300
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p
ControlPersist 8h

In questo caso per ogni connessione SSH, viene generata una socket (es: ~/.ssh/root@befair2.befair.it:22) usata per:

fungere da multiplexer per tutte le sessioni SSH

mantenere la connessione persistente per un certo periodo (in questo caso per 8 ore dalla chiusura di tutte le sessioni aperte)

I vantaggi sono:

e' possibile usare la stessa connessione sia per classici utilizzi di SSH che per Ansible (configurando quest'ultimo con la stessa path della socket)

minor traffico di rete soprattutto quando ci sono elevati traffici (es: Ansible)

minori tempi di risposta una volta istanziata la connessione

miglior sicurezza, in quanto si evita la rinegoziazione tramite chiavi asimmetriche di una nuova One-Time-Password ad ogni sessione

Infine ServerAliveInterval serve a inviare periodicamente un “ping” per mantenere attiva la sessione (mi e' tornato utile nel caso di connessioni instabili). Il tempo e' espresso in secondi.

Nota: e' importante che i parametri di default siano inseriti in fondo, perche' altrimenti sovrascrivono gli altri.