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.

Proxy SSH

E' possibile connettersi ad un server passando per un server intermedio. Prendiamo come server intermedio master e come server di destinazione desmc, la connessione sara' quindi:

portatile → master → desmc

Possiamo sfruttare netcat sul server intermedio. Installiamolo con:

# apt-get install netcat

Ora bisogna configurare il proprio client SSH sul portatile:

# server intermedio
Host master
HostName 123.45.67.89 # IP del server intermedio
User root
# server di destinazione
Host desmacerata.it desmc
HostName 195.223.142.97 # IP del server di destinazione
Port 4444 # porta del server di destinazione
User root
ProxyCommand ssh master nc %h %p 2> /dev/null # comando chiave che e' spiegato bene nel link in fondo

%h e %p sono dei segnaposti per richiamare i valori dell'hostname e della porta del server di destinazione.

Da notare che la propria chiave privata non va copiata sul server intermedio, ma e' sufficiente avere la propria chiave pubblica sui 2 server.

Infine dal portatile lanciare:

$ ssh desmc

Fonte: http://undeadly.org/cgi?action=article&sid=20070925181947