Aug 172013
 

sshIo uso le connessioni ssh per gestire i server remoti che è uno dei compiti principali del mio lavoro, quindi con il tempo ho imparato alcuni trucchi per velocizzare la fase di connessione del protocollo SSH, quindi in questo articolo vi mostrerò come:

Dire a ssh di usare solo IPv4
Dire a ssh quale metodo di autenticazione da utilizzare
Riutilizzare le connessioni SSH
Disattivare la ricerca DNS lato server

Inoltre, se siete interessati ad ssh potete dare un’occhiata ai miei precedente articoli su Come mantenere le connessioni ssh attive su Linux e come mantenere attivo un Tunnel SSH permanente con autossh .



Si prega di notare che ho usato queste modifiche sul mio Ubuntu 13.04 e Arch Linux, versioni precedenti di ssh potrebbero non avere tutte queste opzioni.

Usare SSH con solo IPv4.

A volte riesco a raggiungere un server su IPv4, ma non su IPv6. Altre volte il collegamento IPv6 è instabile o pieno di bug, quindi essere in grado di forzare una connessione SSH su IPv4 può essere molto utile, ed è anche più veloce in alcuni casi.

Per forzare una connessione IPv4 si può semplicemente utilizzare questo comando sul proprio computer:

 ssh -4 user@hostname.com

Questo esegue un collegamento ad hostname.com utilizzando solo il protocollo IPv4, d’altro canto se si vuole forzare una connessione IPV6 è possibile utilizzare il comando:

 ssh -6 user@hostname.com

Usare SSH con un particolare metodo di autenticazione

In generale, il modo migliore per l’autenticazione è con uno scambio di chiavi tra il client ssh e il server ssh, in questo modo non c’è bisogno di mettere la password ogni volta che si esegue una connessione, ma a volte non si è scambiata la chiave tra il client e il server e quindi è necessario utilizzare la buona vecchia password.

In questo caso è possibile utilizzare una opzione per ignorare il metodo pubkey e andare direttamente al metodo password, per fare questo utilizzare questo comando:

ssh -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no user@hostname.com

È anche possibile fare il contrario, ed eseguire ssh solo con il metodo pubkey con il comando:

ssh -o PreferredAuthentications=publickey user@hostname.com

Riutilizzare connessione SSH

E’ possibile riutilizzare una connessione verso un server remoto utilizzando la direttiva ControlMaster. Il concetto è molto semplice – piuttosto creare una nuova connessione TCP per ogni nuova connessione SSH ad un server particolare, si crea invece un multiplex di tutte le connessioni SSH verso una connessione TCP. L’autenticazione avviene solo una volta, quando la connessione TCP viene aperta, e da allora in poi tutte le sessioni supplementari SSH vengono inviate attraverso quella connessione.
Per impostare questa opzione, aprire il file di configurazione di ssh per l’utente, che si trova in: ~/.ssh/config e aggiungere queste opzioni:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

Questo dice il client ssh di usare sempre un ControlMaster su tutti gli host. È possibile impostare per autoask invece di auto di avere ssh richiederà o meno di riutilizzare una connessione esistente. La direttiva ControlPath configurazione dice a ssh dove dovrebbe mantenere la sua presa dati. In questo esempio, i file vengono creati in / tmp, ma può essere meglio mettere questo nella vostra home directory su sistemi multi-utente.

Disabilitare la ricerca DNS sul lato server

Come ultima cosa, se siete il proprietario del server remoto è possibile configurarlo per non risolvere il nome della IP che si sta collegando via ssh, c’è una variabile in OpenSSH che controlla se sshd non deve solo risolvere i nomi degli host remoti ma anche verificare se i nomi host risolti danno gli IP remoti. A quanto pare, tale impostazione è attivata per impostazione predefinita in OpenSSH. La direttiva UseDNS controlla questo particolare comportamento di OpenSSH, e mentre è usualmente commentata in sshd_config (che è il file di configurazione di default per il demone OpenSSH nella maggior parte degli ambienti), guardando la pagina di manuale di sshd_config, l’impostazione predefinita per UseDNS è impostato su enable. Togliendo il commento alla linea e mettendo la direttiva UseDNS a “no” disabilita questa funzione.

Questa direttiva può essere modificata nel file /etc/ssh/sshd_config e una volta che l’avete cambiato è necessario riavviare il demone ssh con il comando:

 /etc/init.d/ssh restart

O equivalente.

Conclusioni

Questi sono alcuni suggerimenti rapidi per velocizzare le vostre attività quotidiane con ssh, se avete altri consigli o suggerimenti semplicemente aggiungeteli come commenti, sono sempre alla ricerca di buoni trucchi.

Riferimenti

SSH ControlMaster: The Good, The Bad, The Ugly


Popular Posts:

flattr this!

  2 Responses to “4 trucchi per velocizzare le connessioni ssh”

  1. I’ve had problems with DNS lookup in CentOS before. I don’t know if other distros have different default kn OpenSSH but CentOS is the only distro where I have experienced very slow logons because of DNS lookups.

  2. I will be a pedant and say that really these methods speed up the process of connecting to a server, but not the connection itself. Thanks anyway for the information.

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>