多段sshをするのは知ってれば結構簡単で
[digitalbot@local]$ ssh -t FOO ssh BAR
と-t
オプションを使うことでssh先で後続のコマンドを実行してくれるのでlocal --> FOO --> BAR
と多段sshしてくれる。
途中でsudoをはさむ
途中でsudoを挟んで三段sshするときなんかは少しやっかい。
local --> FOO --> BAR --> BAZ
でFOOからBARにsshする際にsudo ssh BAR
しなきゃいけないとき。
つまりワンライナーじゃなく順番にログインしていくと下記みたいになるやつ。
[digitalbot@local]$ ssh FOO
[digitalbot@FOO]$ sudo ssh BAR
[root@BAR]$ ssh BAZ
これは
[digitalbot@local]$ ssh -t FOO /usr/bin/sudo ssh -t BAR ssh BAZ
で一足飛びに途中でsudoを挟んで多段sshできる。sudoじゃなくても、途中で文字コード変換を挟んだりする場合も同じ要領でできるはず。
これはどの環境でもそうなのかよくわからないけど、sudo
をフルパスで書かないとssh -t
で仮想ログインしたシェルでパスが通ってなくてエラーがでてしまったので注意が必要。
.ssh/configでの設定
当然.ssh/config内で設定しといたほうが楽なので設定したいところなんだけど、途中でsudoを挟む場合の書き方がイマイチよくわかってない。
途中でsudoがなければ
Host FOO
Hostname foo.com
User digitalbot
Host BAR
Hostname bar.com
User digitalbot
ProxyCommand ssh FOO -W %h:%p
みたいにそれぞれに単純に書くだけで良いのだけど…
だれかわかるようだったらsudoを挟む書き方を教えて。
Emacsのtrampだったら途中でsudoを挟む多段sshもできるから、できないことないと思うんだけど1。
ちなみに
ProxyCommand内の-Wを使った書き方はOpenSSHのver.5.4以前では使えないのでその場合はnc
を使えば良い。