Centos

SSH:空閒一段時間後連接重置

  • June 14, 2018

當我的連接空閒一段時間後,遠端主機將關閉連接。我嘗試輸入一個新命令,它掛起,然後關閉連接。如何使 ssh 連接保持活動更長時間?

$ ssh root@host.com
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

遠端是 CentOS on Amazon (AWS),本地是 Cygwin。

因為您上次登錄是來自 comcast.net,所以我猜您是從一個home系統連接的,而您位於執行 NAT 的路由器後面。執行 NAT 的系統的一個問題是知道何時不再需要連接。如果連接完全斷開,則沒有問題,但如果兩台機器只是重新啟動,則 NAT 框沒有信號表明這已發生。因此,您的典型 NAT 盒子有計時器,上面寫著“如果一個小時內沒有流量,那麼兩個端點顯然不會再發送任何東西”,因此會回收 NAT 佔用的資源。

所以要做的就是每隔一段時間發送一些流量。假設您在 cygwin 機器上使用該openssh實現,最簡單的方法是啟用 TCPKeepAlive。代替

ssh root@host.com

ssh -o TCPKeepAlive=true root@host.com

對於長期使用,您最好設置一個~/.ssh/config文件。

host fred
    hostname host.com
    user root
    TCPKeepAlive=true

然後你就可以說只是ssh fred用所需的選項連接到機器。

引用自:https://unix.stackexchange.com/questions/334437