ssh隧道时netcat的“-w timeout”选项的目的是什么?

jrd*_*oko 4 ssh tunneling proxy gateway netcat

我与发布另一个问题的人处于完全相同的情况,我试图通过网关服务器建立 ssh 连接,而不必 ssh 进入网关并从那里再次手动 ssh 到目标服务器。我正在尝试设置那里接受的答案中给出的解决方案,~/.ssh/config其中包括:

host foo
  User webby
  ProxyCommand ssh a nc -w 3 %h %p

host a
  User johndoe
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试时ssh foo,我的连接会保持活动状态 3 秒,然后因Write failed: Broken pipe错误而终止。删除该-w 3选项可以解决问题。-w 3在原始解决方案中这样做的目的是什么,为什么Broken pipe在我使用它时会导致错误?省略它有什么害处?

qua*_*nta 5

-w 3在原始解决方案中的目的是什么

ncssh会话不正确关闭时,它避免了使孤立进程在远程主机上运行。

为什么Broken pipe在我使用它时会导致错误?

尝试将超时nc增加到 90 并设置ServerAliveInterval为 30 以查看您的问题是否消失:

host foo
    User webby
    ServerAliveInterval 30
    ProxyCommand ssh a nc -w 90 %h %p
Run Code Online (Sandbox Code Playgroud)