2012-04-19 21 views
29

Estoy tratando de reducir el tiempo que ssh intenta abrir una conexión a un host. Si pongo, por ejemplo, ssh www.google.com, tarda mucho tiempo hasta que vuelva el aviso.Establecer el tiempo de espera de conexión SSH

He leído sobre el uso de ssh -o ConnectTimeout=10 www.google.com en su lugar, pero incluso esto lleva mucho tiempo. ¿Hay quizás una serie de intentos que pueda modificar para disminuir el tiempo de bloqueo?

+5

de ssh docs: "Utilice esto para especificar el tiempo de espera (en segundos) utilizado al conectarse al servidor SSH, en lugar de utilizar el tiempo de espera predeterminado del sistema TCP. Este valor se usa solo cuando el destino está inactivo o no accesible, no cuando rechaza la conexión ". – Adi

Respuesta

44

El problema puede ser que ssh está intentando conectarse a todas las direcciones IP diferentes a las que resuelve www.google.com. Por ejemplo en mi máquina:

# ssh -v -o ConnectTimeout=1 -o ConnectionAttempts=1 www.google.com 
OpenSSH_5.9p1, OpenSSL 0.9.8t 18 Jan 2012 
debug1: Connecting to www.google.com [173.194.43.20] port 22. 
debug1: connect to address 173.194.43.20 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.19] port 22. 
debug1: connect to address 173.194.43.19 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.18] port 22. 
debug1: connect to address 173.194.43.18 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.17] port 22. 
debug1: connect to address 173.194.43.17 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.16] port 22. 
debug1: connect to address 173.194.43.16 port 22: Connection timed out 
ssh: connect to host www.google.com port 22: Connection timed out 

Si me quedo con una dirección IP específica, se vuelve mucho más rápido.

EDITAR: He cronometré (con time) y los resultados son:

    www.google.com
  • - 5.086 segundos
  • 173.94.43.16 - 1,054 segundos
2

La opción ConnectTimeout le permite decirle a su cliente ssh cuánto tiempo desea esperar una conexión antes de devolver un error. Al configurar ConnectTimeout en 1, de hecho está diciendo "intente durante al menos 1 segundo y luego falle si aún no se ha conectado".

El problema es que cuando se conecta por nombre, la búsqueda DNS puede tardar varios segundos. La conexión por dirección IP es mucho más rápida y puede funcionar en un segundo o menos. Lo que sinelaw está experimentando es que cada intento de conectarse por nombre DNS no se produce dentro de un segundo. La configuración predeterminada de ConnectTimeout se remite al tiempo de espera de conexión del kernel de Linux, que suele ser bastante largo.

+4

Es bastante inusual que una búsqueda de DNS tome varios segundos. –

Cuestiones relacionadas