Definir o tempo-limite da ligação SSH
ssh -o ConnectTimeout=10 www.google.com
, mas mesmo isto demora muito tempo. Há alguma tentativa que eu possa modificar para diminuir o tempo de bloqueio?
2 answers
O problema pode ser que a ssh esteja a tentar ligar-se a Todos Os diferentes IPs a que www.google.com
se resolve. Por exemplo na minha 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
Se eu o executar com um IP específico, ele retorna muito mais rápido.
EDIT : Eu cronometrei (com time
) e os resultados são:
- www.google.com -5.086 segundos
- 173, 94, 43, 16-1, 054 segundos
A opção ConnectTimeout permite-lhe dizer ao seu cliente ssh quanto tempo está disposto a esperar por uma ligação antes de devolver um erro. Ao definir ConnectTimeout para 1, Você está efetivamente dizendo "tente no máximo 1 segundo e, em seguida, falhar se você ainda não se conectou".
O problema é que quando você se conecta pelo nome, a pesquisa do DNS pode levar vários segundos. Conectar por endereço IP é muito mais rápido, e pode realmente funcionar em um segundo ou menos. O que sinelaw está experimentando é que cada tentativa de se conectar pelo nome DNS está falhando em um segundo. A configuração padrão dos defers do ConnectTimeout para o tempo-limite do kernel connect do linux, que normalmente é bastante longo.