User Tools

Site Tools


sysadmin:ssh

This is an old revision of the document!


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

Nota: tutti i server befairX hanno netcat gia' installato :-)

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.

Nota: la propria chiave privata non va copiata sul server intermedio, 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

sysadmin/ssh.1414495723.txt.gz · Last modified: 2015/01/05 12:31 (external edit)