Как освободить порты на сервере SSH, когда обратный SSH туннель резко отключается/uncleanly?

У нас есть некоторое оборудование, которое мы устанавливаем в местах наших клиентов, что оборудование подключается к нашему серверу ssh и устанавливает обратный туннель ssh, чтобы мы могли получить доступ к нескольким клиентским системам для целей мониторинга.

все работает нормально, пока не произойдет нечистое отключение сеанса SSH.

когда это происходит, на нашем SSH-сервере порты, которые использовались обратным туннелем, застревают в режиме прослушивания и когда наше удаленное оборудование в конечном итоге пытается для автоматического повторного подключения и восстановить свои туннели он терпит неудачу с ошибкой

предупреждение: экспедирование удаленный порт не слушает порт ХХХХ

Я проверил, если была проблема с нашим сервером SSH или клиента, пытаясь чистый отсоединить и, конечно, что освобождает порты просто отлично. Когда я имитирую сбой соединения (например, отключите порт Ethernet клиентского оборудования), у нас есть та же проблема, которую я описал выше.

Что правильный способ справиться с этой ситуацией? Имейте в виду, что это обратные туннели, поэтому все, что происходит, должно быть сделано на сервере SSH. В идеале мне нужен SSH-сервер, чтобы мгновенно осознать, что сессия SSH хостинг туннели вниз и освободить порты он использует. Я думаю, что решение может включать в себя убийство соответствующего процесса SSH, но мне нужно быть осторожным с этой причиной, у нас есть несколько клиентов, подключающихся к одному и тому же ssh-серверу, и я бы не хотел их пинать автономный.

будучи настолько зрелым, я уверен, что SSHD имеет какую-то встроенную функцию для обработки этого, но я просто не могу понять это.

пожалуйста, сообщите, так что я не должен вернуться к администрированию окна ...

FYI: я запускаю это на дистрибутиве на основе Debian.

8
задан Glorfindel
11.02.2023 5:42 Количество просмотров материала 2636
Распечатать страницу

1 ответ

вы должны использовать ClientAliveInterval в своем sshd_config.

ClientAliveInterval 15

Ref:man sshd_config

ClientAliveCountMax
         Sets the number of client alive messages (see below) which may be
         sent without sshd(8) receiving any messages back from the client.
         If this threshold is reached while client alive messages are
         being sent, sshd will disconnect the client, terminating the
         session.  It is important to note that the use of client alive
         messages is very different from TCPKeepAlive (below).  The client
         alive messages are sent through the encrypted channel and
         therefore will not be spoofable.  The TCP keepalive option
         enabled by TCPKeepAlive is spoofable.  The client alive mechanism
         is valuable when the client or server depend on knowing when a
         connection has become inactive.

         The default value is 3.  If ClientAliveInterval (see below) is
         set to 15, and ClientAliveCountMax is left at the default,
         unresponsive SSH clients will be disconnected after approximately
         45 seconds.  This option applies to protocol version 2 only.

 ClientAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the client, sshd(8) will send a message
         through the encrypted channel to request a response from the
         client.  The default is 0, indicating that these messages will
         not be sent to the client.  This option applies to protocol
         version 2 only.
13
отвечен clement 2023-02-12 13:30

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

Ваш ответ

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

Имя
Вверх