当我尝试 ssh 到远程主机时,有时会收到此错误:
mux_client_request_session: read from master failed: Broken pipe
我在 ~/.ssh/config 中使用 Macbook Air OS X Lion:
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h
ForwardAgent yes
Host [ex]
HostName [example.com]
User [somedude]
当我这样做时会发生上述错误:
ssh ex
终端挂起约 1 分钟,然后显示:
mux_client_request_session: read from master failed: Broken pipe
[email protected]'s password:
我输入密码后一切正常。如果我打开另一个终端选项卡,连接共享也一切正常。我该如何解决这个问题?这不是很糟糕,但很烦人。
答案1
您已ControlPersist
启用。我猜测会发生以下情况:
- 您已连接到 example.com
- 注销,但由于
ControlPersist
已启用,会话将保持打开以供将来连接。 - 您的网络连接出现问题,因此持续连接中断。
- 当您再次运行时,它会尝试重用步骤 2 中的连接,并在超时后打开一个新的连接。
ssh [email protected]
根据 ,此超时没有单独的选项可用man ssh_config
。为避免这种情况,请勿使用ControlPersist
。此外,如果可能,我强烈建议使用公钥登录。您仍然可以为公钥设置密码,但公钥可以有效防止通过 SSH 连接暴力破解您的密码。
此外,您不应将控制文件存储在 下/tmp
。这些文件应该/必须得到保护,为此,例如,这~/.ssh/master/ssh_mux_%h_%p_%r
是更好的位置。当然,如果您是笔记本电脑的唯一用户(?),那不是太大的问题。