Mac で .ssh/config ファイルを include で分割して管理

このエントリーをはてなブックマークに追加

昨日のエントリーで
macOS Sierra の SSH で、秘密鍵のパスフレーズが Keychain 保存されない問題の解決方法
を書いたのですが、調べ事をはじめたきっかけは昨日書いていた内容ではなくて、 .ssh/config 肥大化していく問題を、なんとか出いないかと調べ始めたのがきっかけでした。

調べていたところ、 OpenSSH 7.3 から include でファイル分割ができるようになっていたようなので、こちらもメモエントリー。

.ssh/config を include でファイル分割管理

何か方法ないかなーと、 SSH の config のオプションをみていたところ、 include なる文字を発見。 include できるの?って思って年始早々に検索したところ 7.3 からできるようになっていたーって記事を発見。

待望の.ssh/configファイル分割がSSH 7.3から出来るようになったようです

Includeキーワードでssh_configを分割できるようになった件 - Qiita

参考にしながら自分も設定

ディレクトリー構成

下記のように、ドメイン名単位(もしくはプロジェクト単位)で conf.d の配下にディレクトリをつくって、そこに入れる運用にしました。

  • .ssh
    • config
    • conf.d
      • domain_nameA
        • config
      • domain_nameB
        • config

conf.d じゃなくてもなんでもいいのですが、include用のディレクトリ用意するか、 config_* みたいに分ける程度でいいと思います。

私の場合はディレクトリでまるっと破棄できるように上記のような構成に(慣習とかわからなかったので、自分にあった構成に)。

あとは conf.d 配下のディレクトリが読み込まれるように include の設定

.ssh/config ファイルに include の指定

.ssh/config

Include ~/.ssh/conf.d/**/*

**/* みたいなワイルドカード指定もできたので、今回はそれを利用。

他のファイルも入れるなら(入れないとは思うけど) Include ~/.ssh/conf.d/**/config とか Include ~/.ssh/conf.d/**/config_* で include でも良さそう。

これで1ファイルのみが肥大化しないで、conf.d 配下に追加していく運用で対応ができそうです。

調べるきっかけ

昨年の10月あたりに、facebook のタイムラインで、SSHの鍵多すぎで config ファイルが肥大化していくよーという話題がながれてきていました。特に気にもとめていなかったのですが、多くなってきて1ファイルにゴソゴソとコメントも入れず詰め込んでいった結果、鍵認証ではないパスワード認証が必要なほうが、 config 肥大化していてエラーという状況に。

一度整理しないとと思い、他にもやることあったのに、なぜかこれに取り掛かかったという謎。

そして、分割はできたものの、パスワード認証が必要なものの対応に PreferredAuthentications password とか入れなければエラーになるってのまでは調べられなかったので、これは今後確認しようと思います。

掲載写真

Photographer
Leo, The Soundmonster!
License
Creative Commons (BY-ND)