我有一个到一台机器的 ssh 连接,该连接在 30 分钟没有用户输入后被该机器断开。但是,如果我开始类似的操作top
,连接将保持活动状态。由于这是客户端的机器,我无法重新配置该机器的 SSH 服务器。所以我正在寻找一种方法来自动检测空闲并启动类似top
. 一种 Bash 的“屏幕保护程序”。
我知道我可以用 来做到这一点screen
,但不幸的screen
是没有安装,而且我无法安装软件。所以我需要使用 Bash 提供的东西。
明确地说:我正在寻找一种解决方案,我在登录后启动一次,然后我想使用该终端,走开,两小时后回来继续工作,在走开之前不输入任何内容。此外,我不希望隧道的东西(为此我推荐伟大的工具sshuttle)
有任何想法吗?
Thi*_*his 121
明确地说:我正在寻找一种解决方案,我在登录后启动一次,然后我想使用该终端,走开,两小时后回来继续工作,在走开之前不输入任何内容。
问题是有一些东西(通常是防火墙或负载平衡器)正在丢弃空闲会话。如果您配置会话保持连接,保持连接将阻止网络设备将会话视为空闲。
Linux / Unix / Cygwin OpenSSH 修复:
最简单的修复是启用 ssh 客户端 keepalive;此示例将每 60 秒发送一次 ssh keepalive:
ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>
Run Code Online (Sandbox Code Playgroud)
如果您想在所有会话中启用此功能,请将其放入您的/etc/ssh/ssh_config
或~/.ssh/config
:
ServerAliveInterval 60
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅ssh_config
联机帮助页
腻子修复:
将此保存到您的 PuTTY“默认设置”...
Mur*_*mel 42
除了Mike Pennigton 的回答,我也想让你知道ServerAliveCountMax
。
ServerAliveInterval
会发送一个保活每x秒(默认为0,如果没有设置到别的东西即禁用此功能)。ServerAliveCountMax
如果没有收到响应,这将被执行多次。的缺省值ServerAliveCountMax
是3(见手册页ssh_config中)。示例:如果设置ServerAliveInterval
为60并保持ServerAliveCountMax
原样,这意味着 keepalive 将仅等待3 * 60 = 180 seconds =
3分钟才会退出。
要将其增加到例如尝试保持连接活动的 2 小时,您可以执行以下操作:
每个命令:
因此你应该考虑设置
ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>
Run Code Online (Sandbox Code Playgroud)
执着的:
要使其持久写入/etc/ssh/ssh_config
(将在系统范围内应用)或~/.ssh/config
(将仅应用于用户):
ServerAliveInterval 60
ServerAliveCountMax 120
Run Code Online (Sandbox Code Playgroud)
正如dislick正确指出的那样,这可能不是您想要的,具体取决于您的情况:
ServerAliveCountMax
。ServerAliveCountMax
以允许ssh
继续尝试重新建立连接。也可以看看:
jdh*_*hao 10
我正在使用 Mobaxterm,也遇到了这个问题。Mobaxterm 还附带一个选项,可以在客户端空闲时保持客户端活动。去Settings -> Configuration -> SSH
。有标题的部分SSH settings
,检查选项SSH keepalive
。那么问题就应该消失了。
归档时间: |
|
查看次数: |
134057 次 |
最近记录: |