Как я могу сохранить свои сессии SSH от замораживания?

Оказывается, что ключ, который не работал, не был настроен правильно в authorized_keys файл, в конце концов. Извините за это...

Я неправильно принял это ssh -i /home/user1/.ssh/id_rsa user1@myserver был признак, что это было настроено правильно, но это, оказывается, не имеет место. Это использует другие ключи также. Принуждение ssh -i /home/user1/.ssh/id_rsa -oIdentitiesOnly=yes user1@myserver заставляет его перестать работать с неправильной конфигурацией также.

Я предполагаю агент SSH, настроенный, когда вхождение в систему с Gnome также берет другие ключи ~/.ssh/ каталог, который заставляет его работать с тем другим ключом, даже если неправильный ключ указан с -i.

73
04.05.2015, 11:17
10 ответов

Изменения, которые вы внесли в /etc/ssh/ssh_config и /etc/ssh/sshd_config, верны, но все равно не будут иметь никакого эффекта.

Чтобы заставить вашу конфигурацию работать, сделайте эти изменения на клиенте:

/etc/ssh/ssh_config

Host *
ServerAliveInterval 100

ServerAliveInterval Клиент будет посылать нулевой пакет на сервер каждые 100 секунд, чтобы соединение оставалось живым

NULL пакет, посылаемый сервером клиенту. Тот же самый пакет посылается клиентом серверу. TCP NULL пакет не содержит никаких управляющих флагов, таких как SYN, ACK, FIN и т.д., потому что сервер не требует ответа от клиента. NULL пакет описан здесь: https://tools.ietf.org/html/rfc6592

Затем на сервере настраивается часть sshd.

/etc/ssh/sshd_config

ClientAliveInterval 60
TCPKeepAlive yes
ClientAliveCountMax 10000

ClientAliveInterval Сервер подождет 60 секунд, прежде чем отправить нулевой пакет клиенту, чтобы соединение оставалось живым

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

ClientAliveCountMax Server будет посылать живые сообщения клиенту, даже если он не получил ни одного сообщения от клиента.

Наконец-то перезапустите ssh сервер ssh

service sshd restart или service sshd restart, в зависимости от того, на какой системе вы находитесь.

87
27.01.2020, 19:31

Проверьте конфигурацию sshd на главной машине /etc/sshd_config для настройки IdleTimeout .

IdleTimeout time
Sets idle timeout limit to time in seconds (s or nothing afternumber), 
in minutes (m), in hours (h), in days (d), or in weeks (w).If the 
connection have been idle (all channels) for that long time thechild 
process is killed with SIGHUP, and connection is closed down.
1
27.01.2020, 19:31

Вам не нужно связываться с скриптами init. В Debian вы можете просто добавить строку в /etc/init.d/rc.local , которые вызывают программу; Затем он будет запущен после всех скриптов init.

Если вы позвоните в программу в /etc/init.d/boot.local вместо этого он будет работать только при загрузке, а не при переключении руге.

-121--116339-

С openssh:

Вам необходимо включить

TCPKeepAlive yes

как в вашем клиенте ssh_config (например, / etc / ssh / ssh_config или в ~ /. ssh / config ) и ваш сервер назначения SSH-сервера работает OpenSSH (например, / etc / ssh / sshd_config).

Так что каждый раз, когда ваше соединение простаивает, OpenSSH отправляет какой-то фигурный пакет на ваш пункт назначения ...

2
27.01.2020, 19:31

Личное предложение: используйте экран на удаленном хосте; ему удастся поддерживать ваше соединение до тех пор, пока оно остается активным в терминале.

Вот что я обычно добавляю в / etc / screenrc для быстрой идентификации моих сеансов экрана:

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
defscrollback 8192

РЕДАКТИРОВАТЬ: Подсказки.

В строке hardstatus будет отображаться нижняя строка состояния, например, эта: Screen session example with three open tabs

Буфер прокрутки также расширен до 8192 строк вместо обычных 1000-1500 (в зависимости от распространение).

13
27.01.2020, 19:31

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

С веб-сайта :

Mosh (мобильная оболочка)

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

Mosh заменяет SSH. Он более надежен и отзывчив, особенно при использовании Wi-Fi, сотовой связи и междугородних соединений.

Mosh - бесплатное программное обеспечение, доступное для GNU / Linux, BSD, macOS, Solaris, Android, Chrome и iOS.

В сочетании с tmux (или более старым экраном ) это позволяет мне подключаться через ssh к серверу с моего ноутбука и оставаться на связи в течение нескольких дней. даже при смене Wi-Fi-соединения и при пропадании мобильных данных.

2
27.01.2020, 19:31

В моем случае проблема заключалась в большом размере MTU. Вы можете изменить MTU на роутере, если используете NAT, но я меняю MTU на сервере:

sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart
0
27.01.2020, 19:31

Небольшой лайфхак, который я использую, если невозможно использовать экран или редактировать настройки сервера hosts ssh, или любые другие хорошие и правильные предложения выше...

Просто запустите top всякий раз, когда собираетесь оставить сеанс в покое.

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

1
27.01.2020, 19:31

Раньше у меня зависало SSH-соединение.

Приведенное ниже решение сработало для меня. Теперь соединение SSH всегда остается активным.

С сервера:


  1. Отредактируйте файл в/etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config
  1. Добавьте или активируйте эту строку в файле.
ClientAliveInterval 60
  1. Сохраните файл и перезапустите службу sshd
$ sudo service sshd restart

С локальной машины/клиента:


  1. Отредактируйте файл в/etc/ssh/ssh_config
$ sudo vi /etc/ssh/ssh_config
  1. Добавьте эту строку в файл.
ServerAliveInterval 60
  1. Сохраните файл

Об этих параметрах:

ServerAliveInterval:количество секунд, в течение которых клиент будет ждать перед отправкой нулевого пакета на сервер (, чтобы поддерживать соединение ).

ClientAliveInterval:количество секунд, в течение которых сервер будет ждать перед отправкой нулевого пакета клиенту (, чтобы поддерживать соединение ).

Important: Whenever any modification is performed on a Production instance, please ensure to create a backup.

0
15.06.2021, 14:46

Мой SSH начал постоянно закрываться через минуту после того, как был открыт, и я думаю, что это было из-за настройки сетевого адаптера, которую я изменил, чтобы мой компьютер не просыпался от спящего режима. Мой компьютер просыпался без причины, поэтому я нашел эту статью о том, как это остановить, и это сработало. В статье говорится, что нужно зайти в Диспетчер устройств, найти соответствующий адаптер Ethernet или Wi-Fi -в разделе «Сетевые адаптеры», щелкнуть правой кнопкой мыши -по нему, выбрать «Свойства», открыть вкладку «Управление питанием» и снять флажок «Разрешить этому устройству использовать». Разбудить компьютер.

В качестве альтернативы было сказано, что вы можете оставить этот флажок установленным и установить флажок Разрешить только волшебный пакет для пробуждения компьютера. Я сделал это, и позже мой SSH постоянно закрывался через минуту, поэтому я считаю, что это было виновником. Поэтому убедитесь, что этот параметр на вашем сетевом адаптере не изменился по умолчанию. Чтобы изменения вступили в силу, возможно, потребуется перезагрузить компьютер.

0
16.09.2021, 02:28

У меня была похожая проблема:

  • соединение ssh осталось УСТАНОВЛЕННЫМ
  • терминал зависает и un -постоянно зависает
  • пакеты видны в SEND -Q, пока терминал зависает
  • время заморозки примерно 2 -4 минуты
  • ип -завис примерно на 30 секунд

Оказывается, прошивка моего роутера устарела!

  • исправлена ​​проблема с обновлением прошивки
0
07.10.2021, 09:47

Теги

Похожие вопросы