Как удалить соединения, оставленные открытыми SSH ProxyCommand? - PullRequest
4 голосов
/ 28 апреля 2011

У меня есть веб-сервер WWW1 и фронтальный прокси PRX. Я использую SSH ProxyCommand для подключения к внутреннему IP-адресу WWW1 (частный IP) через PRX (частный + публичный IP). Для некоторых соединений (не всех) я вижу, что сетевое соединение остается открытым после завершения. Это в сумме!

~ / .ssh / конфигурации

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, но он не имеет специальной конфигурации (AFAIK) за пределами моего ~/.ssh/config.

Я беспокоюсь о нехватке внутренних портов, и в идеале я хочу, чтобы эти соединения очищались без вмешательства. В идеале, настраивая их, чтобы убить себя; неудача в том, что команда, с помощью которой я могу уничтожить старые процессы - это хорошо!

Ответы [ 2 ]

10 голосов
/ 04 июня 2012

Лучше было бы использовать опцию -W SSH, чтобы вы могли поставить

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

вместо

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

Таким образом вы избавитесь от зависимости отnc тоже.

4 голосов
/ 28 апреля 2011

Не знаю, имеет ли это значение, но я использую nc -w 1 %h %p

...