这似乎在Ubuntu的
gnome-terminal
中,尽管它似乎正在暂停终端的输入/输出,并且不会影响GNOME终端软件本身的操作。因此,gnome-terminal
的bug更少,而不是ssh的烦扰。因此,有没有办法防止/重新注册终端的ssh连接超时?
#1 楼
sshd(服务器)如果在一段时间内未收到客户端的任何消息,则关闭连接。您可以告诉客户端偶尔将生命周期信号发送到服务器。此配置在文件
~/.ssh/config
中。每四个发送一次信号分钟即可到达remotehost,
将以下内容放入您的
~/.ssh/config
中。Host remotehost
HostName remotehost.com
ServerAliveInterval 240
这就是我
~/.ssh/config
中的内容。要将其启用以供所有主机使用:
Host *
ServerAliveInterval 240
还要确保运行
chmod 600 ~/.ssh/config
,因为配置文件一定不能被世界范围读取。评论
谢谢sblair的帮助,我非常感激。我将“不应”改回“不得”,因为ssh会检查文件的权限,并且如果文件是世界或组可读的文件,它将失败。
–路德维希·魏尼尔(Ludwig Weinzierl)
2011年10月1日在20:26
这不是OP所要求的。由于没有活动,他没有被开学。他正在尝试连接,并且终端处于冻结状态。
–塞林
2014年7月2日在16:43
〜/ .ssh / config在哪里?
–用户
2014-09-26 21:48
@User'〜/'代表您的主文件夹。 “ .ssh”是主文件夹中的文件夹。
– wkm
15年1月28日在12:44
如果您的连接实际上丢失了,这是没有用的...
–so12311
15年2月4日在19:25
#2 楼
按Enter,〜、。一个接一个地从冻结的会话断开连接。ssh手册页中的“ ESCAPE CHARACTERS”部分说明了底层详细信息。
评论
在我看来,这个答案可以更准确地回答问题,无论如何,这就是我一直在寻找的答案。
–CoatedMoose
2012年12月2日,下午5:06
请注意,您需要取消注释/ etc / ssh / ssh_config中的EscapeChar〜行(如果需要,也可以取消注释〜/ .ssh / ssh_config)。
– Aditya M P
13年8月3日在6:19
@CoatedMoose问题标题要求避免ssh连接超时的方法;这是冻结连接后终止连接的一种方法。这是一个非常有用的技巧,但不是该问题的更准确答案。
–马克
2015年4月5日,12:57
@Mark问题询问“是否有办法防止终端超时的ssh连接重新获得终端?”强调我的。
–CoatedMoose
15年4月7日在18:55
即使在问题中这是不正确的,这也正是我想要的。
– Subin Sebastian
16年4月28日在12:37
#3 楼
即使这不是您问题的直接答案,也与您遇到的问题高度相关。可以使用终端多路复用器(例如screen
和tmux
)来使会话保持活动状态,即使您的终端断开连接也可以使会话保持活动状态,而不是尝试使连接保持活动状态(所有连接最终都将终止)。基本上,当您登录到SSH服务器后,您立即运行
screen
,它将创建并附加一个新会话:$ screen
然后继续操作外壳,就像您将要做的那样通常做。现在,如果连接断开,当您可以重新联机并通过SSH重新连接到服务器时,您将获得以下列表的当前会话:
$ screen -ls
重新连接到会话:
$ screen -r <session>
其中
<session>
是PID或会话名称。您将重新连接到会话,并且可以从上次中断的地方继续!您甚至可以断开会话并重新连接到家中,以从上次中断的确切位置接听。要分离会话,请使用
C-a
,然后使用C-d
(即Control + A
和Control + D
)。也有简单的在线教程。
在远程服务器上使用
screen
和tmux
是被认为是最佳做法,强烈建议您这样做。有些人甚至将screen
作为其默认登录外壳,因此当他们连接时,他们立即开始新的screen
会话。 评论
另一种选择是使用mosh:mosh.mit.edu
–僵尸
2015年12月25日19:13
如果您使用的热点或wifi偶尔掉线,这将特别有用。
–兰德尔
16年7月13日在17:27
#4 楼
尝试将-o ServerAliveInterval=30
附加到连接字符串(30
表示30秒,当然可以调整)#5 楼
您还可以从SSH服务器端设置空闲超时间隔:文件:
/etc/ssh/ssh_config
内容:
ClientAliveInterval XX
ClientAliveCountMax YY
它的工作方式与客户端设置完全相同,但是空包是从服务器而不是客户端发送的。
摘自:
http:/ /www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
评论
要配置服务器设置,您必须修改/ etc / ssh / sshd_config。 ssh_config用于客户端设置,sshd_config(SSH守护程序)是服务器部分。
– Mikko Rantalainen
20-11-18在17:05
#6 楼
对于那些想首先阻止客户端超时的用户。您可以尝试在配置文件中设置
ConnectTimeout 0
。值0表示除非关闭,否则连接将无限期保持活动状态。 您的配置(或ssh_config)文件可能如下所示:
Host *
ConnectTimeout 0
#7 楼
就我而言,问题在于MTU大小过大。如果使用NAT,则可以在路由器上更改MTU,但是我可以在服务器上更改MTU:sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart
在Windows上,您也可以增加此键:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpMaxDataRetransmissions"=dword:00000010
#8 楼
不确定这是否也适用于gnome终端,但是您应该在杀死ssh客户端进程之后再次使用该终端。pgrep -a ssh
为您提供进程ID,然后您可以将其杀死
kill <pID>
评论
如何可靠地保持SSH隧道打开的可能重复项?