Amazon EC2 ssh超时因不活动而导致

Rob*_*rto 54 ssh amazon-ec2 amazon-web-services

我可以通过SSH向我的EC2实例发出命令,这些命令记录了我应该长时间观看的答案.糟糕的是,由于我的不活动,SSH命令在一段时间后关闭,我不再能够看到我的实例发生了什么.

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

错误如下所示:

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

mau*_*dea 112

您可以在计算机主目录的〜/ .ssh/config文件中设置keep alive选项:

ServerAliveInterval 50
Run Code Online (Sandbox Code Playgroud)

亚马逊AWS通常在仅60秒不活动后断开连接,因此该选项将每隔50秒对服务器执行一次ping操作,并使您无限期地保持连接.

  • 是的,它在客户端,在您的 *nix 计算机上的 ssh 配置中。我会更新答案,谢谢!对我来说,它实际上是 120 秒,但我有一个同事在另一个地区工作,他在 60 秒后超时。不要问我为什么,我不在亚马逊工作!这就是为什么我说“通常”60 秒。我认为推荐 50 秒是明智的,因为 1. 它几乎适用于每个人,2. 它不会破坏您的网络连接,它只是一个 ping。你可以放 10 秒,它仍然足够轻,不会陷入某种服务器禁令。 (4认同)
  • 此设置位于客户端,而不是AWS服务器,对吧?在答案中值得一提.另外,你确定60秒吗?它确实需要比我超时的连接要长得多. (3认同)
  • 完美答案!要扩展,如果文件尚未由系统创建,则文件应为`chmod 644 .ssh/config`. (2认同)

nak*_*aki 38

假设您的Amazon EC2实例正在运行Linux(并且很可能是您使用SSH-2,而不是1),以下应该非常方便:

  1. 远程进入您的EC2实例.

    ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将"client-alive"指令添加到实例的SSH服务器配置文件中.

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

  4. 断开.

    logout
    
    Run Code Online (Sandbox Code Playgroud)

下次你连接到那个EC2实例时,那些超级烦人的频繁连接冻结/超时/丢弃应该会消失.

这也有助于Google Compute Engine实例,它们具有类似烦人的默认设置.

警告:请注意,TCPKEEPALIVE设置(这也是存在的)是微妙的,但在明显不同ClientAlive我上面提出的设置,以及从更改默认设置TCPKEEPALIVE实际上可能伤害你的情况,而不是帮助.

更多信息请访问:http://man.openbsd.org/?query = ssshd_config


Ite*_*tor 9

考虑使用screen或者byobu问题可能会消失.更重要的是,即使连接丢失,您也可以通过screen -r或重新连接和恢复对之前相同终端屏幕的访问权限byobu -r.

byobu是一种屏幕增强功能,有一套很棒的选项,比如估计EC2成本.

  • 这不应该被标记为正确答案,因为它回答了另一个问题. (6认同)
  • 我更喜欢@ brandnewcode的`ServerAliveInterval`,如下所示.我一直在使用tmux,它类似于屏幕.tmux的一个意想不到的好处是状态栏上的时钟,每分钟更新一次,保持连接打开.tl; dr:`tmux`开始一个会话,`tmux a`重新连接. (3认同)

小智 7

我知道对于Putty你可以使用keepalive设置,所以它会经常发送一些活动包,以免"空闲"或"陈旧"

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

如果您正在使用其他客户端,请告诉我.