параметр времени ожидания ssh занимает больше времени, чем указано

попытка запуска скрипта, подтверждающего установку даты на большом количестве серверов в локальной сети. Все серверы являются локальными, и если они работоспособны, я ожидаю времени ответа < 1 секунды. Чтобы скрипт работал с полезной скоростью, я хочу, чтобы время ожидания соединения было как можно меньше.

Так что я пытаюсь это как мой основной тест в цикле. (IP адрес будет переменным)

ssh -v -o ConnectTimeout=1 -o ConnectionAttempts=1 10.x.x.x date

для здоровых серверов это работает нормально, но я вижу некоторые коробки, которые висят и появляются игнорируйте значения времени ожидания. Висит от 1 до 2 минут, а не 1 секунду, я ожидал бы. Подробный вывод выглядит следующим образом.

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /root/.ssh/config
debug1: Applying options for *10.x.x.x*
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to *10.x.x.x* [*10.x.x.x*] port 22.
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/aws_rsa type -1
debug1: identity file /root/.ssh/aws_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP

(вот где сидит за одну-две минуты)

Connection to *10.x.x.x* timed out while waiting to read

одна деталь, которую я замечаю, заключается в том, что существует "какая-то" связь, это происходит, но это неудачное соединение. Сервер не работает и не отвечает ожидаемым образом. Есть ли еще один вариант, который я могу выбрать, который бы обнаружил это и потерпел неудачу быстрее, когда есть проблемы с протоколом?

9
задан Jakuje
05.11.2022 17:29 Количество просмотров материала 2516
Распечатать страницу

1 ответ

С ручной страницы для ssh_config:

ConnectTimeout

задает тайм-аут (в секундах), используемый при подключении к SSH-серверу, вместо системного тайм-аута TCP по умолчанию. Это значение используется только в том случае, если целевой объект не работает или действительно недоступен, а не в случае отказа от подключения.

это может быть не совсем ясно из этих строк, но тайм-аут используется только для connect() системный вызов, в основном перед строкой

debug1: Connection established.

и не за каждый другой ответ от сервера. Для этого есть опция ServerAliveInterval, который pings сервер через каждые X секунд, чтобы убедиться, что сервер отвечает после подключения (по умолчанию выключен). Но вы бьете случай, когда ваш TCPKeepAlive раз, что еще одна глава.

2
отвечен Jakuje 2022-11-07 01:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх