昨日のエントリーで
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
- domain_nameA
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
とか入れなければエラーになるってのまでは調べられなかったので、これは今後確認しようと思います。