pecoでSSH - AWS EC2に入れてみた


まえがき

踏み台サーバーのEC2からいろいろなサーバーへSSH接続するときのTipsです。pecoを使ってHost名をインクリメンタルサーチし、EnterひとつでSSH接続できるようにしましょう。

.ssh/configを設定する

.ssh/configを使うメリットなどは以下を参考にしてください。
https://qiita.com/passol78/items/2ad123e39efeb1a5286b
例えば、以下のように.ssh/configを作成します。

Host dev-machine01
HostName 52.192.64.xxx
User ec2-user
IdentityFile ~/.ssh/dev-machine.key

Host dev-machine02
HostName 52.192.64.yyy
User ec2-user
IdentityFile ~/.ssh/dev-machine.key

すると、踏み台サーバーで

ssh dev-machine01

とコマンドを打つだけで52.192.64.xxxへSSH接続できます。

多少は便利になりましたが、Host名を覚えておかなければいけないのは大変です。そこでpecoを利用してHost名をインクリメンタルサーチできるようにしましょう。

pecoをインストールする

wgetを使ってインストールする。

wget https://github.com/peco/peco/releases/download/v0.5.2/peco_linux_amd64.tar.gz
tar xvfz peco_linux_amd64.tar.gz
cd peco_linux_amd64
chmod 100 peco
sudo mv peco /usr/local/bin/
rm -r peco_linux_amd64 peco_linux_amd64.tar.gz

pecoがインストールできたら以下のコマンドで.ssh/configの中からHost名をインクリメンタルサーチしてみましょう。

grep -w Host .ssh/config | peco


こんな感じになれば成功です。

aliasを設定する

最後にHost名をインクリメンタルサーチし、EnterひとつでSSH接続するコマンドにaliasを設定しましょう。~/.bashrcに以下を書き込みます。

alias s='ssh $(grep -w Host ~/.ssh/config | awk '\''{print $2}'\'' | peco)'
source ~/.bashrc

で再読み込みして、sというコマンドが打てれば成功です。