netcatを使って踏み台を踏む手順を省く
拝啓
全国1億5千万の踏み台サーバ好きのみなさま
元気に踏み台サーバを踏まれているでしょうか。
社内で利用していながらよく理解していなかったので
改めてカジュアルに学び直したメモを書いておきます。
参考
クラアント -> 踏み台サーバ -> 対象サーバ
という時に、毎回踏み台サーバに入って、対象サーバに入るのは面倒くさいので
「~/.ssh/config」へ
Host fumidai Hostname 203.0.113.1 User kenjiskywalker Host hoge-web01 Hostname 203.0.113.101 User kenjiskywalker ProxyCommand ssh fumidai nc -w 300 %h %p
このように設定することによって
$ ssh hoge-web01
このコマンドだけで、fumidaiを踏んでhoge-web01サーバへ
ログインしてくれるのである。実に助かる。
踏み台サーバを.ssh/configに記載しない場合に気を付けないといけないのは
Host hoge-web01 Hostname 203.0.113.101 User kenjiskywalker ProxyCommand ssh 203.0.113.1 nc -w 300 %h %p
とやってしまってうと
Permission denied (publickey,gssapi-with-mic). ssh_exchange_identification: Connection closed by remote host
とエラーになってしまう。原因は簡単で
ssh 203.0.113.1 => kenjiskywalker@203.0.113.101 ということで
踏み台サーバのログインアカウントを指定し忘れている状態になる。
というのを1人であれれーってやってた。恥ずかしい。。
色々調べていると、最近ではnetcat使うよりもsshの-Wオプション使う人が多いっぽい。
-w付けないと居残り組が発生する事象もないし、踏み台側にnetcat入れなくても
大丈夫なので、これから始める人はssh -Wで良さそう。
netcat
Host hoge-web01 Hostname 203.0.113.101 User kenjiskywalker ProxyCommand ssh -l kenjiskywalker 203.0.113.1 nc -w 300 %h %p
ssh -W
Host hoge-web01 Hostname 203.0.113.101 User kenjiskywalker ProxyCommand ssh -W %h %p -l kenjiskywalker 203.0.113.1
また、同一セグメントに対しても
ホスト名を一意に設定して、相互認識できるようにしておけば
Host fumidai Hostname 203.0.113.1 User kenjiskywalker Host hoge-* User kenjiskywalker ProxyCommand ssh fumidai nc -w 300 %h %p
こんな感じで楽ができるって知った。
@fujiwara++
netcat自体は原始的であるが故に強力で
発想さえあれば色々と面白いことができるのがいい。
中2要素がふんだんに詰まっているのがいい。
( '~')