Amazon EC2 ssh таймаут из-за бездействия
Я могу выдавать команды для своих экземпляров EC2 через SSH, и эти команды записывают ответы, которые я должен продолжать смотреть в течение длительного времени. Плохо то, что SSH-команда закрывается через некоторое время из-за моей бездеятельности, и я больше не могу видеть, что происходит с моими экземплярами.
Как отключить/увеличить время ожидания на машинах Amazon Linux?
Ошибка выглядит так:
Read from remote host ec2-50-17-48-222.compute-1.amazonaws.com: Connection reset by peer
Ответы
Ответ 1
Рассмотрим использование screen
или byobu
, и проблема, скорее всего, исчезнет. Что еще, даже если соединение потеряно, вы можете повторно подключить и восстановить доступ к тому же самому экрану терминала, который у вас был до этого, через screen -r
или byobu -r
.
byobu является улучшением для экрана и имеет замечательный набор опций, таких как оценка затрат EC2.
Ответ 2
Вы можете установить опцию keep alive в файле ~/.ssh/config на домашнем каталоге вашего компьютера:
ServerAliveInterval 50
Amazon AWS обычно отключает ваше соединение только через 60 секунд бездействия, поэтому этот параметр будет пинговать сервер каждые 50 секунд и поддерживать связь неограниченно.
Ответ 3
Предполагая, что экземпляр Amazon EC2 работает под управлением Linux (и очень вероятный случай, когда вы используете SSH-2, а не 1), следующее должно работать довольно удобно:
-
Удаленный доступ к экземпляру EC2.
ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE>
-
Добавить директиву "клиент-живьем" в конфигурационный файл SSH-сервера экземпляра.
echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config
-
Перезагрузите или перезагрузите SSH-сервер, чтобы распознать изменение конфигурации.
-
Команда для этого в Ubuntu Linux будет...
sudo service ssh restart
-
В любой другой Linux, однако, вероятно, правильно.
sudo service sshd restart
-
Отключить.
logout
В следующий раз, когда вы будете использовать SSH в этом экземпляре EC2, эти чрезмерно раздражающие частые зависания подключений/тайм-ауты/капли, надеюсь, исчезнут.
Это также помогает с экземплярами Google Compute Engine, которые имеют аналогичные досадные настройки по умолчанию.
Предупреждение: Обратите внимание, что настройки TCPKeepAlive (которые также существуют) являются тонко, но отчетливо отличаются от настроек ClientAlive, которые я предлагаю выше, и изменение параметров TCPKeepAlive по умолчанию может повредить вашей ситуации, а не помочь.
Дополнительная информация здесь: http://man.openbsd.org/?query=sshd_config
Ответ 4
Я знаю, что для Putty вы можете использовать настройку keepalive, поэтому он будет отправлять пакет активности каждый раз так часто, чтобы не идти "без дела" или "устаревать"
http://the.earth.li/~sgtatham/putty/0.55/htmldoc/Chapter4.html#S4.13.4
Если вы используете другого клиента, дайте мне знать.
Ответ 5
У меня есть 10+ пользовательских AMI, основанных на AMI Amazon Linux, и я никогда не сталкивался с проблемами таймаута из-за неактивности в SSH-соединении. У меня были соединения, которые остаются открытыми более 24 часов, без выполнения одной команды. Я не думаю, что есть таймауты, встроенные в AMI Amazon Linux.