HPC ssh “соединение закрыто удалённым хостом”

Вопрос или проблема

Мой установленный 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 для автоматической отправки сообщений о состоянии подключения, чтобы предотвратить закрытие соединения из-за бездействия. Для этого выполните следующие шаги:

  1. Откройте файл конфигурации SSH для редактирования. В вашем случае это файл ~/.ssh/config на узле c01.

  2. Добавьте следующие строки в файл:

    Host c02
     ServerAliveCountMax 30
     ServerAliveInterval 60
     TCPKeepAlive yes

    Эти настройки означают, что клиент будет отправлять запросы на поддержание соединения каждые 60 секунд и будет пытаться выполнить это до 30 попыток.

  3. Убедитесь, что у вас установлены правильные права доступа к файлам:

    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-системы.

Оцените материал
Добавить комментарий

Капча загружается...