SSH:闲置一段时间后连接重置

SSH:闲置一段时间后连接重置

当我的连接空闲一段时间后,远程主机会关闭连接。我尝试输入一个新命令,它挂起,然后关闭连接。如何让 ssh 连接保持更长时间的活动状态?

$ ssh [email protected]
Last login: Tue Jan  3 03:09:39 2017 from c-99-99-99-99.hsd1.xx.comcast.net
[root@ip-172-99-99-99 ~]# groups
root bin daemon sys adm disk wheel
[root@ip-172-99-99-99 ~]# users
root root
[root@ip-172-99-99-99 ~]# less /etc/passwd
[root@ip-172-99-99-99 ~]# Connection reset by 52.99.99.99 port 22

远程是 Amazon (AWS) 上的 CentOS,本地是 Cygwin。

答案1

因为您上次登录是从 comcast.net 进行的,所以我猜测您是从home位于正在执行 NAT 的路由器后面的系统进行连接。执行 NAT 的系统存在的一个问题是知道何时不再需要连接。如果连接完全断开,则没有问题,但如果两台计算机刚刚重新启动,则 NAT 盒不会收到任何信号表明发生了这种情况。因此,您典型的 NAT 盒具有计时器,该计时器会显示“如果一小时内没有流量,那么两个端点显然不会再发送任何内容”,因此会回收 NAT 占用的资源。

所以要做的就是每隔一段时间发送一些流量。假设您openssh在 cygwin 机器上使用该实现,最简单的方法是启用 TCPKeepAlive。代替

ssh [email protected]

ssh -o TCPKeepAlive=true [email protected]

为了长期使用,您最好建立一个~/.ssh/config文件。

 host fred
     hostname host.com
     user root
     TCPKeepAlive=true

然后您就可以说只需ssh fred使用所需的选项连接到机器即可。

答案2

它正在使用您上次保存的会话 SSH 密钥。

您必须将其删除,然后ssh为您尝试访问的 IP 地址添加新密钥。

ssh-keygen -f "/home/asagarwal-dev/.ssh/known_hosts" -R 10.0.0.6

上面的命令解决了我的问题(10.0.0.6我试图ssh从主机获取的IP地址在哪里)。

答案3

作为 ssh 客户端,请在下面进行配置:

Host *
ServerAliveInterval 60

sudo source ~/.ssh/config

所有远程主机都在此处配置:

/etc/ssh/ssh_config

ServerAliveInterval 60

相关内容