地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

多段ssh

client -> host1(踏み台サーバ) -> host2(目的のサーバ) とログインしたいケースでsshコマンドを一回で済ませる方法

~/.ssh/configへ下記のように記載することで行うことができる。

Host           host1
HostName       host1.hoge.fuga
User           user
IdentityFile   ~/.ssh/id_rsa

Host           host2
HostName       host2.foo.bar
User           user
IdentityFile   ~/.ssh/id_rsa
ProxyCommand   ssh -CW %h:%p host1

簡単に解説するとssh host2を実行した段階でProxyCommandに記載されたコマンドが実行される。その仕組みを利用することで多段sshを簡易化してしまう。

ただ、難点としては以下の方法を使用する際に踏み台の先のサーバが表示されてしまう。

qiita.com

sshLoginHost=`cat ~/.ssh/config | grep -i ^host | awk '{print $2}' | fzf`

sshのconfiに書く際に何か工夫が必要となる。(踏み台行はsshの対象外になるようgrepすれば良い)