pecoとconfigでsshを楽にする

投稿日: カテゴリー IT, Macタグ , ,

Macユーザーになって数年経つのですが、Pecoというツールを知ったのはついこの間です。
PecoはMacやLinuxにインストール可能なフィルタリングコマンドです。

具体的には、Gitのリポジトリを管理しているディレクトリで、文字を入力することなく対象ディレクトリへアクセスしたり、今回ご紹介するSSHのコマンドを省略できたりする便利ツールです。

ツールそのものはとてもシンプルで、きっと他にも活用例があると思いますが、今回はSSH接続の例でご紹介します。

環境はMacを想定しておりますが、インストール以外は基本使い方は一緒だと思います。

環境

MacOS 10.11

インストール方法

$ brew install peco

これだけです。

シェルのconfigファイルに下記を追記

※私の場合は.zshrcでしたがbashであれば.bashrcです。

$ vim ~/.zshrc
#peco&ssh
function peco-ssh () {
local selected_host=$(awk '
tolower($1)=="host" {
for (i=2; i<=NF; i++) {
if ($i !~ "[<em>?]") {
print $i
}
}
}
' ~/.ssh/conf.d/</em>| sort | peco --query "$LBUFFER")
if [ -n "$selected_host" ]; then
BUFFER="ssh ${selected_host}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-ssh
bindkey 'SS' peco-ssh</code>

$ sourc ~/.zshrc

これで”SS”とキーボードで入力すると、~/.ssh/configが読まれます。

### sshのconfig管理
sshクライアントのconfigではconf.dのようなinclude機能はないようで、他の方のを参考にしたところ、一番分かりやすい方法がありましたのでそれを私は採用しました。

$ mkdir ~/.ssh/conf.d
$ cd ~/.ssh/conf.d
$ vim config
## ここにホスト以外の共通の設定を記載する。
Host *
ServerAliveInterval 10
TCPKeepAlive yes

グループごとに◯◯.confを作成して、通常どおりconfigを記載する。
最後に~/.ssh/configに記述するスクリプトを作っておく。
※手でコマンド入力しても良いですがこっちのほうが楽です。

$ vim ~/.ssh/makeconfig.sh
#!/bin/bash

cat ~/.ssh/conf.d/config ~/.ssh/conf.d/*.conf &gt; ~/.ssh/config

$ chmod u+x ~/.ssh/makeconfig.sh
$ ~/.ssh/makeconfig.sh

以上です。
conf.d配下のconfigを追加編集したら、都度makeconfig.shを実行すれば更新されます。

pecoを使ってsshしてみる。

peco

こんな感じでホスト一覧が出るので、キーボードで選択するor文字を入力して対象を絞ることができ、そのあとはsshコマンドを入力したのと同じになります。
とても便利ですのでホストをコピペしている人はお試しあれ。

以上。