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オプションを使った方が良いのかなと思いました。