如何清除通过SSH ProxyCommand打开的连接?

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

的〜/ .ssh /configuration

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 lsof | grep WWW1:ssh此刻lsof | grep WWW1:ssh显示了124个打开的连接。 在WWW1上,相同的命令显示243个打开的连接。 WWW2,WWW3等也有类似的开放连接

WWW1和PRX是Debian。 客户端连接来自Debian,Ubuntu和OSX10.6的混合。 我使用Emacs Tramp,但是在我的~/.ssh/config之外没有特别的configuration(AFAIK)。

我担心内部端口用尽,理想的情况是我希望这些连接能够在没有干预的情况下自行清理。 理想情况下,通过configuration它们来消灭自己; 没有一个命令,我可以杀死旧的进程是好的!

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

更好的方法是使用SSH的-W选项,所以你可以放

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

代替

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

这样你也摆脱了对nc的依赖。