こんにちは、M1の中川です。
今年度よりCDSLに配属になったのでブログ初投稿です。
最近になって、ssh_configに書かれたHost
の数が増えるにつれ、configファイルを分割したいというモチベーションが湧いてきました。
そこで今回、OpenSSH 7.3から利用可能になった Include ディレクティブを用いて以下のように、ファイル分割を試みました。
- ~/.ssh/config
Include conf.d/*
Host hoge
# field omitted
- ~/.ssh/conf.d/foo
Host foo
# field omitted
- ~/.ssh/conf.d/bar
Host bar
# field omitted
これを用いてターミナル上から、ssh hoge
はもちろん、ssh foo
やらssh bar
をすることになんら問題はありませんでした。
しかし、Visual Studio Codeの拡張機能にあるRemote SSHの方で問題が生じました。~/.ssh/configに直接書かれたhoge
はRemote SSHに認識されましたが、foo
やbar
が認識されませんでした。どうもInclude が機能していないように見えます。
ここで、「なんだRemote SSHでInclude使えないじゃん」と一旦諦めたのですが、後日改めてconfigの分割に挑戦をしていたところ、Remote SSHのレポジトリにそれらしきIssueを見つけました。
要はIncludeディレクティブの*
(ワイルドカード)に対応ができていないということで、~/.ssh/config を
- ~/.ssh/config
Include conf.d/foo
Include conf.d/bar
のように書き換える必要がありました。(完全に盲点で、ワイルドカードだけがNGだとは思いもしませんでした。)
書き換えたら、ちゃんとRemote SSHにfoo
,bar
ともに認識されるようになりました 🙂
まとめ
今回は、ssh_configのIncludeディレクティブの紹介と、Remote SSHでは (今のところ) ssh_configのIncludeディレクティブで *
(ワイルドカード) が利用できないため1ファイルずつ Include
をする必要がある、という話をしました。
Includeディレクティブによるファイル分割も、Remote SSHもとっても便利なのでどんどん活用していきましょう!