Mac OS X Lion 终端 SSH 连接共享错误

Dav*_*Xia 12 ssh terminal connection-sharing macbook-air

当我尝试 ssh 到远程主机时,有时会收到此错误:

mux_client_request_session: read from master failed: Broken pipe
Run Code Online (Sandbox Code Playgroud)

我在 ~/.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]
Run Code Online (Sandbox Code Playgroud)

当我这样做时会发生上述错误:

ssh ex
Run Code Online (Sandbox Code Playgroud)

终端挂起约 1 分钟,然后显示:

mux_client_request_session: read from master failed: Broken pipe
somedude@example.com's password:
Run Code Online (Sandbox Code Playgroud)

我输入我的密码,没问题。如果我打开另一个终端选项卡,连接共享也可以。我怎样才能解决这个问题?这并不可怕,但很烦人。

Oll*_*lli 15

您已ControlPersist启用。我有根据的猜测是会发生以下情况:

  1. 您已连接到 example.com
  2. 注销,但由于ControlPersist已启用,会话保持打开状态以供将来连接。
  3. 您的网络连接出现问题,因此持久连接中断。
  4. 当您ssh somedude@example.com再次运行时,它会尝试重用步骤 2 中的连接,并在超时后打开一个新连接。

根据 ,此超时没有单独的选项可用man ssh_config。为避免这种情况,请不要使用ControlPersist. 此外,如果可能,我强烈建议使用公钥登录。您仍然可以为您的公钥设置密码,但公钥可以有效地防止通过 SSH 连接暴力破解您的密码。

此外,您不应将控制文件存储在/tmp. 那些应该/必须得到保护,为此,例如~/.ssh/master/ssh_mux_%h_%p_%r是更好的位置。当然,如果您是笔记本电脑的唯一用户 (?),那也不是什么大问题。