netcatを使わずにSSHのProxyCommandで多段ssh

AのサーバにBのサーバを経由してSSH接続する場合
今まではnetcatを利用していましたが
OpenSSH 5.4からはnetcatの機能が組み込まれたようです。

ということで試してみました。


~/.ssh/config の内容

変更前 [netcat使用]

nc %h %p

Host hoge_host
   HostName 192.168.1.10
   ProxyCommand ssh -l hoge_name 192.168.0.5 nc %h %p
変更後 [netcat未使用]

-W %h:%p

Host hoge_host
   HostName 192.168.1.10
   ProxyCommand ssh -l hoge_name 192.168.0.5 -W %h:%p
接続
ssh hoge_host

最初 %h:%p を %h %p にしていて繋がりませんでした。。

が、問題なく接続できましたー。


結論

まあ、どっちでも同じことができるのですが

  • 中継サーバでnetcatがなくてもよい
  • 接続中に中継サーバでnetcatのプロセスが動かない
  • 中継サーバのSSHのバージョンは問わない

といった利点があるので
手元のOpenSSHのバージョンが5.4以上であれば
Wオプションを使った方が良いのかなと思いました。