Вопрос или проблема
Мой установленный HPC планировщик задач LSF.
Я вхожу в узел для авторизации (я использую xshell) и использую команду интерактивной отправки задач
bsub -Is csh
Таким образом, я вошел в один из узлов HPC, например, узел c01
Затем я хочу войти в другой узел, например, c02
, поэтому я использую
ssh c02
Я успешно вошел в узел c02
. Но через несколько минут соединение закрывается. Сообщение следующее
Соединение с c02 закрыто удаленным хостом.
Соединение с c02 закрыто.
Как поддерживать это соединение?
Следующее сообщение генерируется при использовании ssh -vvv c02
debug3: Написано 64 байта, всего 2925
debug1: канал 0: освобожден: клиентская сессия, nchannels 1
debug3: канал 0: статус: Открыты следующие соединения:
#0 клиентская сессия (t4 r0 i0/0 o0/0 fd 4/5 cfd -1)
debug3: канал 0: close_fds r 4 w 5 e 6 c -1
Соединение с c02 закрыто удаленным хостом.
Соединение с c02 закрыто.
Передано: отправлено 2744, получено 2384 байта, за 158,3 секунды
Байты в секунду: отправлено 17,3, получено 15,1
debug1: Статус выхода -1
Вы можете попробовать использовать SSH keep alive.
На c01 создайте или добавьте следующее в ~/.ssh/config
host c02
ServerAliveCountMax 30
ServerAliveInterval 60
TCPKeepAlive yes
Это будет отправлять сообщение TCP keepalive каждые 60 секунд в течение 30 минут.
https://www.freebsd.org/cgi/man.cgi?query=ssh_config&sektion=5
Убедитесь, что установлены права доступа, как указано ниже:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
Эти параметры также могут быть указаны в командной строке, но я считаю, что конфигурационный файл упрощает задачу. Если вы хотите применить их ко всем хостам, вместо host c02
используйте host *
. Поскольку, вероятно, существует общая файловая система, это будет работать для всех ваших ssh соединений.
Примечание: Эти параметры могут быть отключены в sshd_config
, если это так, то они не будут работать.
Другой вариант, который может сработать, — запустить интерактивную команду, например: watch ls ~
Ответ или решение
Чтобы решить проблему с закрытием соединения SSH на удалённом хосте (в данном случае c02), вы можете использовать несколько методов, направленных на поддержание активной сессии. Одной из распространённых причин, по которой SSH-соединения закрываются, являются тайм-ауты неактивности. Вот рекомендации по поддержанию соединения:
1. Использование параметров KeepAlive в конфигурации SSH
Вы можете настроить параметры SSH для автоматической отправки сообщений о состоянии подключения, чтобы предотвратить закрытие соединения из-за бездействия. Для этого выполните следующие шаги:
-
Откройте файл конфигурации SSH для редактирования. В вашем случае это файл
~/.ssh/config
на узле c01. -
Добавьте следующие строки в файл:
Host c02 ServerAliveCountMax 30 ServerAliveInterval 60 TCPKeepAlive yes
Эти настройки означают, что клиент будет отправлять запросы на поддержание соединения каждые 60 секунд и будет пытаться выполнить это до 30 попыток.
-
Убедитесь, что у вас установлены правильные права доступа к файлам:
chmod 700 ~/.ssh chmod 600 ~/.ssh/config
2. Альтернативные параметры конфигурации
Если вы хотите, чтобы эти настройки применялись ко всем хостам, вы можете изменить строку Host c02
на Host *
. Это позволит использовать одни и те же параметры для всех SSH соединений.
3. Проверка настроек на сервере
Убедитесь, что параметры, связанные с KeepAlive, не отключены на сервере. Это можно проверить в файле /etc/ssh/sshd_config
на сервере c02. Убедитесь, что там отсутствуют строки, аналогичные следующим:
TCPKeepAlive no
ClientAliveInterval
ClientAliveCountMax
Если эти параметры отключены, вам потребуется обратиться к администратору системы для их включения.
4. Альтернативные команды для поддержания активности
Если вы находитесь в интерактивном режиме, вы также можете запустить команду, которая будет поддерживать сессию активной. Например:
watch ls ~
Эта команда будет каждые 2 секунды обновлять список файлов в вашем домашнем каталоге, тем самым предотвращая тайм-аут.
Заключение
Используйте настройки KeepAlive и взаимодействуя с сервером по маршруту SSH, вы сможете решить проблему с закрытием соединения. Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, не стесняйтесь обращаться за помощью к административному персоналу вашей HPC-системы.