首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有ssh连接的ServerAliveInterval的行为

具有ssh连接的ServerAliveInterval的行为
EN

Unix & Linux用户
提问于 2016-10-22 03:10:52
回答 3查看 2.7K关注 0票数 2

使用ssh,我将登录到另一个系统,并在那里执行创建新机器的脚本,并执行一些设置。大约需要7-8个小时。因此,所发生的是,ssh连接不断下降,我总是在脚本执行失败的情况下超时。

因此,现在我使用这个参数以及ssh连接:

代码语言:javascript
运行
复制
ssh -o ServerAliveInterval=60 user@host ....

这个ssh是多次生成的。问题是在几个ssh连接之后,我得到了错误:

too many logins of user和after连接在成功登录之后就会关闭。

那么,即使在ssh工作结束之后,ServerAliveInterval的行为也会使远程机器中的ssh用户登录会话保持活动,这就是为什么我的进一步登录被断开的原因吗?

EN

回答 3

Unix & Linux用户

发布于 2016-10-22 06:43:57

如果你的当事人失去了联系,我不认为这能维持一段时间。可能是服务器端的这些选项:

ClientAliveCountMax设置可以在不接收来自客户端的任何消息的sshd(8)的情况下发送的客户端活动消息的数量。如果在发送客户端活动消息时达到此阈值,sshd将断开客户端连接,终止会话。需要注意的是,客户端活动消息的使用与TCPKeepAlive非常不同。客户端活动消息是通过加密的通道发送的,因此不会被欺骗。TCPKeepAlive启用的TCP持活选项是可伪造的。当客户端或服务器依赖于知道连接何时处于非活动状态时,客户端活动机制是有价值的。默认值为3。如果将ClientAliveInterval设置为15,并且在默认情况下保留ClientAliveCountMax,则响应迟钝的SSH客户端将在大约45秒后断开连接。ClientAliveInterval设置一个超时间隔(秒),之后如果没有从客户端接收数据,sshd(8)将通过加密通道发送消息以请求来自客户端的响应。默认值为0,指示不会将这些消息发送到客户端。

(man sshd_(配置)

也许解决问题的真正方法是使用像屏幕或tmux这样的终端复用器。它们让您的登录和运行的程序持续,即使您的连接下降。您可以在以后的任何时候重新连接到终端,包括正在运行的程序输出。此外,您还可以使用它在单个ssh连接中拥有多个终端。因为您的服务器似乎限制了ssh会话,这也可能是有用的。你可以找到一个这里的屏幕介绍,但是还有很多其他的。

票数 0
EN

Unix & Linux用户

发布于 2016-10-22 09:01:29

那么,即使在ssh工作结束之后,ServerAliveInterval的行为也会使远程机器中的ssh用户登录会话保持活动,这就是为什么我的进一步登录被断开的原因吗?

不是的。这是发送保持活动消息,以检查您的连接,并防止在SSH或较低级别自动断开连接。如果要启动长时间运行的脚本,则应该在远程端使用nohupscreentmux。它将保持您的脚本运行,即使在断开后,与第二个,您可以重新连接现有的终端。

票数 0
EN

Unix & Linux用户

发布于 2022-11-28 20:00:12

在启用ServerAliveInterval=60之后,您可能会得到这些错误,因为您的连接仍在运行。到该服务器的ssh连接/命令模式正在累积比服务器配置允许的更多的同时连接。

您的连接过去会消失,导致同步连接的计数降低,服务器对此很满意(没有拒绝的连接),但您不高兴。

找出服务器关于同时连接的最大数量的配置,或者保持在该限制范围内,或者与服务器管理员协商,为您(甚至是每个人)提高限制。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/318089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档