4

我有一个网络服务器 WWW1 和一个前置代理 PRX。我使用 SSH ProxyCommand 通过 PRX(私有+公共 IP)连接到 WWW1 的内部 IP(私有 IP)。对于某些连接(不是全部),完成后我看到一个网络连接保持打开状态。这些加起来!

~/.ssh/config

Host *
  ServerAliveInterval 5
  ControlMaster auto
  ControlPath ~/.ssh/master-%r@%h:%p

Host WWW1 WWW2 WWW3
  User foo
  ProxyCommand ssh -q -a -x PRX nc %h 22
  IdentityFile ~/.ssh/id_foo_WWWx

在 PRX 上,lsof | grep WWW1:ssh目前显示 124 个打开的连接。在 WWW1 上,相同的命令显示 243 个打开的连接。WWW2、WWW3 等也有类似的开放连接。

WWW1 和 PRX 是 Debian。客户端连接来自 Debian、Ubuntu 和 OSX10.6 的混合。我使用 Emacs Tramp,但这在我的~/.ssh/config.

我担心内部端口用完,理想情况下,我希望这些连接能够自行清理而无需干预。理想情况下,通过配置它们来杀死自己;如果没有我可以杀死旧进程的命令就可以了!

4

2 回答 2

10

更好的方法是使用-WSSH 的选项,所以你可以把

 ProxyCommand ssh -q -a -x PRX -W %h:22

代替

 ProxyCommand ssh -q -a -x PRX nc %h 22

这样你也摆脱了依赖nc

于 2012-06-04T16:39:28.707 回答
4

不知道这是否重要,但我使用nc -w 1 %h %p

于 2011-04-28T09:35:34.653 回答