【问题标题】:How to purge connections left open by SSH ProxyCommand?如何清除 SSH ProxyCommand 打开的连接?
【发布时间】:2011-04-28 09:29:10
【问题描述】:

我有一个网络服务器 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、WW3 等也有类似的开放连接。

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

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

【问题讨论】:

  • 一种解决方法可能是设置一个 cron 任务,一周后杀死 PRX 上的 nc 进程 ...

标签: linux proxy ssh netcat


【解决方案1】:

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

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

而不是

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 美女!我不敢相信我等了同样的问题才在 SuperUser.com 上获得“风滚草”徽章,然后在这里问它在五分钟内得到回答的地方。因为 nc 的使用不是编程的问题,对吧?
    • 不,只有real programmers 知道如何通过代理隧道:)
    猜你喜欢
    • 2017-06-14
    • 2014-05-15
    • 2016-11-17
    • 2013-06-11
    • 2015-02-13
    • 2013-11-14
    • 2023-01-04
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多