Когда я подключаюсь через ssh к определенным серверам, он отключается и «замораживает» терминал (не принимает ввод, не отключается, не может нажать Ctrl-C, чтобы убить процесс ssh или что-либо еще).
Это в Ubuntu, gnome-terminal
хотя, кажется, оно приостанавливает ввод / вывод терминала и не влияет на работу самого программного обеспечения GNOME Terminal. Таким образом, меньше ошибок, gnome-terminal
чем раздражающего несоответствия с ssh.
Итак, есть ли способ предотвратить / восстановить терминал по ssh-соединениям, для которых истекло время ожидания?
ssh
terminal
timeout
gnome-terminal
Kzqai
источник
источник
Ответы:
sshd (сервер) закрывает соединение, если какое-то время ничего не слышит от клиента. Вы можете указать своему клиенту время от времени отправлять на сервер сигнал о наличии знака.
Конфигурация для этого находится в файле
~/.ssh/config
. Чтобы каждые четыре минуты отправлять сигнал на удаленный хост, укажите в своем поле следующее~/.ssh/config
.Это то, что у меня есть в моем
~/.ssh/config
.Чтобы включить его для всех хостов, используйте:
Также обязательно запустите
chmod 600 ~/.ssh/config
, потому что файл конфигурации не должен быть доступен для чтения всем.источник
~/.ssh/config
?Нажмите Enter, ~, .один за другим , чтобы отключиться от замерзшего сессии.
Раздел «ESCAPE CHARACTERS» на странице руководства ssh объясняет основные детали.
источник
EscapeChar ~
в/etc/ssh/ssh_config
(или ,~/.ssh/ssh_config
если вы предпочитаете).EscapeChar ~
уже встроенный по умолчанию.Даже если это не прямой ответ на ваш вопрос, это тесно связано с вашей проблемой. Вместо того , чтобы пытаться держать соединение (все соединения в конце концов умирают) , вы можете использовать терминальные мультиплексоры, как
screen
иtmux
что продержать сессию живой в фоновом режиме , даже если ваш терминал получает отключен.По сути, когда вы входите в систему на SSH-сервере, вы сразу же запускаете,
screen
который создает и присоединяет новый сеанс:Затем вы продолжаете работать с оболочкой, как обычно. Теперь, если соединение обрывается, когда вы можете вернуться в онлайн и повторно подключиться к серверу по SSH, вы получите список текущих сеансов с:
Чтобы присоединить к сеансу:
где
<session>
PID или имя сеанса. Вы будете повторно подключены к вашей сессии, и вы можете продолжить с того места, где остановились!Вы даже можете отменить сеанс и восстановить соединение с домом, чтобы забрать с точной точки, где вы остановились. Чтобы отсоединить сеанс, который вы используете
C-a
,C-d
следуйте (вотControl + A
и потомControl + D
).Существует также простое онлайн-руководство .
Использование
screen
иtmux
на удаленных серверах считается лучшей практикой и настоятельно рекомендуется . Некоторые люди заходят так далеко, что используютscreen
свою оболочку входа по умолчанию, поэтому при подключении они сразу же начинают новыйscreen
сеанс.источник
Попробуйте добавить
-o ServerAliveInterval=30
в строку подключения (30
означает 30 секунд и, конечно, может быть скорректирована)источник
Вы также можете установить интервал простоя со стороны сервера SSH:
Файл:
/etc/ssh/ssh_config
Содержание:
Это работает точно так же, как настройки клиента, но нулевые пакеты отправляются с сервера, а не с клиента.
Извлечен из:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
источник
Для людей, которые в первую очередь хотят предотвратить тайм-аут клиента.
Вы можете попытаться установить
ConnectTimeout 0
в файле конфигурации. Значение 0 означает, что соединение будет поддерживаться в течение неопределенного времени, если оно не закрыто.Ваш файл конфигурации (или ssh_config) может выглядеть так:
источник