1

У меня проблема с тем, что мой сетевой маршрутизатор время от времени перезагружается, и из-за этого мое ssh-соединение через терминал с моим сервером Ubuntu прекращается. Интернет-соединение просто временно прервано, и я не хочу, чтобы процессы, запущенные в терминале, были убиты

На моем клиенте ~/.ssh/config у меня есть:

TCPKeepAlive yes
ServerAliveCountMax 10
ServerAliveInterval 5

Но настройка вышеперечисленных параметров не помогает. Сервер sshd имеет параметры по умолчанию для Ubuntu.

Как настроить ssh на клиенте (Mac OS в моем случае) и sshd на сервере (Ubuntu в моем случае), чтобы мои сеансы ssh выдерживали перезагрузку маршрутизатора?

Спасибо!

4 ответа4

2

Из-за особенностей используемого протокола ssh (TCP), соединения будут разорваны после определенного времени ожидания. Я имею тенденцию обходить эти проблемы одним из двух способов:

1) использовать screen на удаленном сервере и повторно подключиться после восстановления соединения. 2) настроить VPN (например, openvpn) и использовать передачу udp, которая допускает прерывания работы сети (а также, с небольшой настройкой, изменения исходного IP-адреса).

1

Поскольку ваш сервер и клиент хорошо поддерживаются, я настоятельно рекомендую MOSH. MOSH использует SSH, но предназначен для мобильности, так что вы можете подключаться, отключаться, менять IP и т.д., И он будет пытаться делать правильные вещи и держать вас на связи. Даже если вы отключитесь, он автоматически подключится и вернет вас обратно туда, где вы были.

Основным недостатком MOSH является то, что он требует установки дополнительного программного обеспечения и поддерживается не на каждой платформе. Windows имеет полу-встроенную поддержку через MobaXTerm, и она не работает с такими вещами, как VMWare ESXi, которые имеют только ванильную поддержку SSH.

MOSH также помогает в медленных соединениях, обеспечивая "интеллектуальный ввод", когда то, что вы вводите, в основном отражается локально, в то время как система выясняет, действительно ли это нужно.

0

Вы можете сделать это с AutoSSH

простая программа, которая позволяет вам запускать экземпляр ssh - держит его под контролем и перезапускает один и тот же экземпляр, как только соединение разорвется до максимального числа раз, контролируемого переменной среды AUTOSSH_MAXSTART, или неопределенно, если значение этого параметра равно отрицательный (по умолчанию).

Объединение этого решения с экраном (впервые упомянутое Дравом) еще лучше.

0

Вышеупомянутый параметр должен быть установлен на сайте ssh-сервера. Только на стороне клиента не помогло. Если у вас нет прав, чтобы соответствовать конфигурации sshd. Я мог бы использовать клиенты ssh, которые поддерживают встроенный ssh. Отправьте некоторые данные, чтобы поддерживать соединение. Putty может сделать это для Windows, SecureCRT может сделать это Mac. Возможно, есть дополнительные клиенты, которые поддерживают эту функцию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .