使用ssh,我将登录到另一个系统,并在那里执行创建新机器的脚本,并执行一些设置。大约需要7-8个小时。因此,所发生的是,ssh连接不断下降,我总是在脚本执行失败的情况下超时。
因此,现在我使用这个参数以及ssh连接:
ssh -o ServerAliveInterval=60 user@host ....
这个ssh是多次生成的。问题是在几个ssh连接之后,我得到了错误:
too many logins of user
和after连接在成功登录之后就会关闭。
那么,即使在ssh工作结束之后,ServerAliveInterval的行为也会使远程机器中的ssh用户登录会话保持活动,这就是为什么我的进一步登录被断开的原因吗?
发布于 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会话,这也可能是有用的。你可以找到一个这里的屏幕介绍,但是还有很多其他的。
发布于 2016-10-22 09:01:29
那么,即使在ssh工作结束之后,
ServerAliveInterval
的行为也会使远程机器中的ssh用户登录会话保持活动,这就是为什么我的进一步登录被断开的原因吗?
不是的。这是发送保持活动消息,以检查您的连接,并防止在SSH或较低级别自动断开连接。如果要启动长时间运行的脚本,则应该在远程端使用nohup
、screen
或tmux
。它将保持您的脚本运行,即使在断开后,与第二个,您可以重新连接现有的终端。
发布于 2022-11-28 20:00:12
在启用ServerAliveInterval=60
之后,您可能会得到这些错误,因为您的连接仍在运行。到该服务器的ssh连接/命令模式正在累积比服务器配置允许的更多的同时连接。
您的连接过去会消失,导致同步连接的计数降低,服务器对此很满意(没有拒绝的连接),但您不高兴。
找出服务器关于同时连接的最大数量的配置,或者保持在该限制范围内,或者与服务器管理员协商,为您(甚至是每个人)提高限制。
https://unix.stackexchange.com/questions/318089
复制相似问题