About Digital

i wanna be a bot...

多段sshの方法

Posted in  Tech | Comments

多段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を使えば良い。

参考

多段sshで4段先のサーバに一発ログイン

Comments