我大量使用重复使用共享连接,我在工作日开始时将该连接打开到远程箱。
我的.ssh/config
样子有点像这样:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host remote
HostName login.remote.com
User username
ForwardX11 yes
ServerAliveInterval 300
这种方法效果很好,但有一个例外。在建立第一个连接后(主连接)这很好用:我可以使用终端主连接在遥控器上做事情,我可以重复使用主连接在新的终端中通过调用ssh remote
,这将打开一个新连接,而无需重新输入我的凭据。
然而,如果过了一段时间(几十分钟到几小时,我不太确定)我想打开一个新的连接,这会失败,并且主连接以消息结尾(在掌握终端):
Connection to login.remote.com closed by remote host.
Connection to login.remote.com closed.
并且(在我用来打开新连接的终端上)
Shared connection to login.remote.com closed.
尽管几秒钟前它还运行正常(我可以使用运行主连接。
编辑::这是ssh -vvv remote
新打开的会话无法正常打开的输出:
OpenSSH_6.1p1 Debian-4,OpenSSL 1.0.1c 2012 年 5 月 10 日
debug1:正在读取配置数据 /home/$USERNAME/.ssh/config
debug1:/home/$USERNAME/.ssh/config 第 27 行:正在应用远程选项
debug1:正在读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:正在应用 * 的选项
debug1:auto-mux:尝试现有主控
debug2:fd 3 设置 O_NONBLOCK
debug2:mux_client_hello_exchange:主控版本 4
debug3:mux_client_forwards:请求转发:0 本地,0 远程
debug3:mux_client_request_session:正在进入
debug3:mux_client_request_alive:正在进入
debug3:mux_client_request_alive:完成 pid = 23500
debug3:mux_client_request_session:会话请求已发送
debug1: mux_client_request_session:主会话 id:5
debug3:mux_client_read_packet:读取标头失败:管道损坏
debug2:控制主机意外终止
与 login.remote.com 的共享连接已关闭。
这对我来说似乎有点奇怪,我想这要么是一个错误,要么是一个错误配置,你能帮忙吗?
答案1
在 ssh 配置中禁用这些选项:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
答案2
使的值ServerAliveInterval
足够小:
ServerAliveInterval 30