Подтвердить что ты не робот

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

4b9b3361

Ответ 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.