2011-08-26 183 views
42

我能够通过SSH向我的EC2实例发出命令,这些命令记录了我应该长期观看的答案。坏消息是,由于我的闲置状态,SSH命令在一段时间后关闭,我不再能看到我的实例正在发生什么。亚马逊EC2由于不活动而导致的ssh超时

如何在Amazon Linux机器中禁用/增加超时?

错误看起来是这样的:

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

回答

9

考虑使用screenbyobu并且问题可能会消失。更重要的是,即使连接丢失,您也可以通过screen -rbyobu -r重新连接并恢复与之前相同的终端屏幕。

byobu是一个屏幕增强,并有一个很好的选项,如EC2成本的估计。

+0

有没有一个很好的教程这些? EC2主机上都没有预先安装,并且从我读过的内容中可以看出,它们应该在服务器上运行它们。 –

+2

我更喜欢@ brandnewcode的'ServerAliveInterval',如下。我一直在使用tmux,这与屏幕很相似。 tmux的一个非预期的好处是状态栏上的时钟每分钟更新一次,保持连接打开。 tl; dr:'tmux'开始会话,'tmux a'重新连接。 – dannyman

+5

这不应该被标记为正确的答案,因为它回答了一个不同的问题。 –

-6

我有10多个定制AMI全部基于亚马逊Linux AMI,而且我从来没有遇到由于SSH连接处于非活动状态而导致的任何超时问题。我有连接保持打开超过24小时,没有运行一个命令。我认为亚马逊Linux AMI中没有任何超时。

+0

你知道我为什么得到这个错误吗? – Roberto

+0

我认为足以说更多的人超时而不是超时,一个可能的原因是你没有超时,这是因为你的ssh有一个客户端设置,偶尔ping远程对等设备以保持断开/从您的连接上重置。 – Jim

26

假设您的Amazon EC2实例在运行Linux(和您正在使用SSH-2,而不是1很可能发生的情况),下面应该工作得得心应手:

  1. 远程连接到您的EC2实例。

    ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE> 
    
  2. 向实例的SSH服务器配置文件添加一个“client-alive”指令。

    echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config 
    
  3. 重新启动或重新加载SSH服务器,以便识别配置更改。

    • Ubuntu Linux操作系统对于命令是..

      sudo service ssh restart 
      
    • 任何其他Linux,不过,以下是可能是正确的..

      sudo service sshd restart 
      
  4. Di sconnect。

    logout 
    

你SSH连接到该EC2实例下一次,那些超级讨厌频繁的连接冻结/超时/分出应该有希望消失。

这对Google Compute Engine实例也有帮助,这些实例带有类似恼人的默认设置。

警告:请注意,TCPKEEPALIVE设置(这也是存在的)是微妙的,但来自ClientAlive设置,我上面的建议明显不同,而且从默认改变TCPKEEPALIVE设置实际上可能会伤害你情况而不是帮助。

此处了解详情:http://man.openbsd.org/?query=sshd_config

+2

那应该是'sudo service sshd restart'我想? – CupawnTae

+1

@CupawnTae Ahh,你可能是对的:OP在他的问题中说亚马逊Linux。事实上,我们应该将其解释为参考基于红帽企业Linux的Amazon Linux AMI--您的拼写是正确的。 – naki

+0

@CupawnTae ...我在我的Amazon EC2 Linux实例上使用Ubuntu。如果有人使用Ubuntu,他们应该按照我写的方式拼写它。 – naki

76

您可以设置保持连接的选项在你的〜/ .ssh /配置您的计算机的主目录文件:

ServerAliveInterval 50 

亚马逊AWS通常下降后您的连接只有60秒的不活动,所以这个选项会每隔50秒对服务器进行一次ping操作,并保持连接无限期。

+2

此设置位于客户端,与AWS服务器相反,对吗?在答案中值得一提。另外,你确定60秒吗?这肯定比我的关系需要更长的时间。 – CupawnTae

+1

是的,它在客户端,在您的* nix计算机上的ssh配置中。我会更新答案,谢谢! 对我来说,这实际上是120秒,但我有一个同事在另一个地区工作,并在60秒内超时。不要问我为什么,我不在亚马逊工作!这就是为什么我说“通常”60秒。我认为建议50秒是谨慎的,因为1.它几乎适用于所有人,2.它不会打断你的网络连接,它只是一个ping。你可以放10秒,它仍然足够轻,不会陷入某种服务器禁令。 – mauriciomdea

+0

非常感谢。不活动1分钟后重新连接是很痛苦的。它帮助了我。 –