Подтвердить что ты не робот

Установите тайм-аут соединения SSH

Я пытаюсь сократить время, когда ssh пытается открыть соединение с хостом. Если я ставлю, например, ssh www.google.com, это займет очень много времени, пока не вернется приглашение.

Я читал об использовании ssh -o ConnectTimeout=10 www.google.com вместо этого, но даже это занимает очень много времени. Может ли быть несколько попыток, которые я могу изменить, чтобы уменьшить время блокировки?

4b9b3361

Ответ 1

Проблема может заключаться в том, что ssh пытается подключиться к all различным IP-адресам, разрешаемым www.google.com. Например, на моей машине:

# 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

Если я запускаю его с определенным IP-адресом, он возвращается намного быстрее.

EDIT: я подсчитал его (с time), и результаты:

  • www.google.com - 5.086 секунд
  • 173.94.43.16 - 1.054 секунд

Ответ 2

Параметр ConnectTimeout позволяет вам сообщить вашему клиенту ssh, сколько времени вы готовы ждать подключения, прежде чем возвращать ошибку. Установив ConnectTimeout равным 1, вы фактически говорите "пробуйте не более 1 секунды, а затем сбой, если вы еще не подключены".

Проблема заключается в том, что при подключении по имени поиск DNS может занять несколько секунд. Подключение по IP-адресу происходит намного быстрее и может работать в течение одной секунды или меньше. То, что происходит в sinelaw, заключается в том, что каждая попытка подключения по DNS-имени не выполняется в течение одной секунды. По умолчанию ConnectTimeout по умолчанию отключает тайм-аут подключения ядра Linux, который обычно довольно длинный.