M. *_*its 217 ssh configuration
我发现了这个问题,但很抱歉,我不太了解这两个变量的设置,ServerAliveInterval
并ClientAliveInterval
在接受的回复中提到。如果我的本地服务器超时,我应该将此值设置为零吗?那么它永远不会超时吗?我应该将其设置为 300 秒还是什么?
我的问题很简单,当我暂停时我的一些连接超时,然后通过响应取消暂停我的笔记本电脑,Write failed: Broken pipe
而有些则没有。如何正确配置本地 sshd 以便它们不会因管道损坏而失败?
Bar*_*emy 280
ServerAliveInterval:客户端在向服务器发送空数据包之前等待的秒数(以保持连接活动)。
ClientAliveInterval:服务器在向客户端发送空数据包之前等待的秒数(以保持连接活动)。
将值设置为 0(默认值)将禁用这些功能,因此如果连接空闲时间过长,连接可能会断开。
ServerAliveInterval 似乎是保持连接活动的最常见策略。为了防止管道损坏问题,这里是我在 .ssh/config 文件中使用的 ssh 配置:
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
Run Code Online (Sandbox Code Playgroud)
上述设置将按以下方式工作,
服务器端的 ClientAliveCountMax 也可能有所帮助。这是在断开连接之前允许客户端保持无响应的时间限制。默认值为 3,就像在三个 ClientAliveInterval 中一样。
ken*_*orb 45
这在sshd_config
手册( man sshd_config
) 中有解释:
ClientAliveInterval
设置以秒为单位的超时间隔,如果没有从客户端接收到数据,sshd 将通过加密通道发送消息以请求客户端的响应。默认为 0,表示这些消息不会发送到客户端。此选项仅适用于协议版本 2。
ClientAliveCountMax
默认值为 3。如果
ClientAliveInterval
(见下文)设置为 15,并ClientAliveCountMax
保留默认值,则无响应的 SSH 客户端将在大约 45 秒后断开连接。此选项仅适用于协议版本 2。
对于客户端选项,请参阅中的说明man ssh_config
:
ServerAliveInterval
设置超时间隔(以秒为单位),此后如果未从服务器接收到数据,
ssh
将通过加密通道发送消息以请求服务器的响应。默认为 0,表示这些消息不会发送到服务器。此选项仅适用于协议版本 2。
ServerAliveCountMax
默认值为 3。例如,如果
ServerAliveInterval
设置为 15 并ServerAliveCountMax
保留默认值,则如果服务器无响应,ssh
将在大约 45 秒后断开连接。此选项仅适用于协议版本 2。
基于上述,0 表示它被禁用。因此,您应该将这些值设置得足够高以避免管道破裂错误。
小智 22
Barthelemy 的答案很酷,但并没有真正找到问题的根源。您挂起计算机并希望在启动计算机时 SSH 会话仍然有效。
ssh 没有这样的配置可以像这样保持连接活跃。SSH 使用 TCP,首先您需要三向握手,然后在空闲时间后保持活动状态。当您关闭/休眠时,所有 TCP 连接都将使用 FIN 关闭。没有办法克服。
对于肮脏的解决方法,您可以使用 VPS 或其他带屏幕的在线盒子来保持连接。出于安全原因,我的建议不要这样做。
小智 17
由于一旦一端停止向接收到的数据包发送 ACK,您无法保证 SSH 连接(即 TCP)将保持活动状态,因此我个人使用http://www.harding.motd.ca/autossh/重新启动我所有的 SSH 连接几乎在我取消暂停时。
由于 GNU Screen 将在服务器端使用,重新连接使我回到以前的位置。
您可以让它监听额外的端口,以便它不断检查连接是否仍然存在,但我个人发现它在禁用该端口的情况下运行良好,并且仅依赖于 SSH 自己的ServerAliveInterval
/ ServerAliveCountMax
。
另一种选择是http://mosh.mit.edu/,它使用 UDP 并从长期缺乏连接中无缝恢复。
小智 7
将长时间运行的会话放在 screen 内 请参阅 screen -h 了解详细信息
这样您就可以使用 ssh 重新连接到计算机并重新连接到屏幕会话
nohup
如果您希望它们在不考虑 SSH 连接的情况下运行,您也可以运行命令。
例如
$ nohup tar -xzf some_huge.tar.gz &
的&
是,我认为,没有必要的,但它很方便,因为它使得在后台运行,所以你可以做其他的东西的过程。
我总是将 nohup 用于任何需要一段时间的过程,这样如果我因任何原因失去连接,我就不必重新开始 - 停电(在我的远程位置,显然不是在主机上),网络中断,等等。
归档时间: |
|
查看次数: |
322215 次 |
最近记录: |