Amazon EC2 SSH тайм-аут из-за неактивности - PullRequest
52 голосов
/ 27 августа 2011

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

Как отключить / увеличить время ожидания на машинах Amazon Linux?

Ошибка выглядит следующим образом:

Read from remote host ec2-50-17-48-222.compute-1.amazonaws.com: Connection reset by peer

Ответы [ 5 ]

102 голосов
/ 22 сентября 2014

Вы можете установить опцию поддержания активности в вашем файле ~ / .ssh / config на домашней директории вашего компьютера:

ServerAliveInterval 50

Amazon AWS обычно разрывает ваше соединение только после 60 секунд бездействия, поэтому этот параметр будет проверять связь с сервером каждые 50 секунд и поддерживать ваше подключение на неопределенное время.

35 голосов
/ 23 июня 2014

Предполагая, что ваш экземпляр Amazon EC2 работает под управлением Linux (и очень вероятно, что вы используете SSH-2, а не 1), следующее должно работать довольно удобно:

  1. Удаленный доступ к вашему экземпляру EC2.

    ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE>
    
  2. Добавьте директиву client-alive в файл конфигурации SSH-сервера экземпляра.

    echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config
    
  3. Перезапустите или перезагрузите сервер SSH, чтобы он распознал изменение конфигурации.

    • Команда для этого в Ubuntu Linux будет ..

      sudo service ssh restart
      
    • На любом другом Linux , однако, следующее, вероятно, правильно ..

      sudo service sshd restart
      
  4. Disconnect.

    logout
    

В следующий раз, когда вы подключитесь к этому экземпляру EC2 по SSH, эти очень раздражающие частые зависания / тайм-ауты / обрывы соединения должны быть пропущены.

Это также помогает с экземплярами Google Compute Engine, которые поставляются с такими же раздражающими настройками по умолчанию.

Предупреждение: Обратите внимание, что настройки TCPKeepAlive (которые также существуют) незначительно, но заметно отличаются от настроек ClientAlive , которые я предлагаю выше и что изменение настроек TCPKeepAlive по умолчанию может скорее навредить вашей ситуации, чем помочь.

Подробнее здесь: http://man.openbsd.org/?query=sshd_config

9 голосов
/ 05 сентября 2011

Попробуйте использовать screen или byobu, и проблема, скорее всего, исчезнет. Более того, даже если соединение потеряно, вы можете повторно подключиться и восстановить доступ к тому же экрану терминала, который у вас был ранее, через screen -r или byobu -r.

byobu - это расширение для экрана, в котором есть замечательный набор опций, например, оценка затрат EC2.

7 голосов
/ 29 августа 2011

Я знаю, что для Putty вы можете использовать параметр keepalive, так что он будет посылать какой-либо пакет активности так часто, чтобы он не переходил в «режим ожидания» или «устарел»

http://the.earth.li/~sgtatham/putty/0.55/htmldoc/Chapter4.html#S4.13.4

Есливы используете другой клиент, дайте мне знать.

0 голосов
/ 30 августа 2011

У меня есть 10+ пользовательских AMI, основанных на AMI Amazon Linux, и у меня никогда не было проблем с тайм-аутом из-за неактивности соединения SSH. У меня были открытые соединения более 24 часов без единой команды. Я не думаю, что в AMI Amazon Linux есть какие-то тайм-ауты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...