sshの設定ファイル(~/.ssh/config
)を分割したい, という欲求は結構あるのではないでしょうか.
例えば大量のサーバを管理している時, 設定ファイルをサーバの用途や環境などでファイルを分けて, config.aws
とかconfig.vps
とかといった名前でグルーピングする, とか.
sshのconfigファイルがincludeに対応していれば, ~/.ssh/config
からこれらのファイルをincludeする, といった形で解決出来るのですが, sshの設定ファイルのincludeは出来ないっぽいです.
解決策として, 上記の記事ではssh
コマンドにaliasを貼って, 各PC固有の設定ファイルと共通の設定ファイルを連結する, という方法が紹介されていたので, こういう感じで解決してみました.
alias 'ssh'=cat ~/.ssh/config.local ~/.ssh/config.global >> ~/.ssh/config; ssh
非常に強引感はありますが, そのPCに不必要なssh関連の設定を混入させない, という目的は達成出来ているので, しばらくはこれで過ごしてみる予定です.
おまけ: SSH & peco
ちなみに, 最近は「ssh」の後にホスト名を入力するのが面倒なので, pecoで選択出来るようにしています.
function peco-ssh() { SSH=$(grep "^\s*Host " ~/.ssh/config | sed s/"[\s ]*Host "// | grep -v "^\*$" | sort | peco) ssh $SSH } alias ss="peco-ssh"
ss
を入力すれば, 後はpecoで接続したサーバを選び, 自動的に接続してくれます.
管理しているサーバが多ければ多いほど, 非常に便利でオススメなので皆様も是非使ってみてください.