ベースssh_config(5)
ステートメントまたはブロック内にInclude
配置して条件付きインクルードを生成できます。Match
Host
含む:指定された構成ファイルを含みます。複数のパス名を指定でき、各パス名には
glob(7)
ワイルドカード文字を含めることができ、ユーザー設定の場合はユーザー~
ホームディレクトリへのシェルなどの参照を含めることができます。ワイルドカードは語彙順に展開され処理されます。絶対パスを持たないファイルは、~/.ssh
ユーザープロファイルに含まれているかシステムプロファイルに含まれている/etc/ssh
と見なされます。インクルードディレクティブは、実行のためにMatchまたはHostブロック内に表示できます。条件付き。
私はこれをやろうとしていますが、いつも見つかった一致を無視して、含まれているすべてのファイルを読むようです。どうしたの?
$ ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
$ cat config_1
Match user foo
Include config_2
Match user bar
Include config_2
Match user !foo,!bar
Hostname xyz
$ cat config_2
Hostname uvw
$ ssh -vv -G -F config_1 bar@random | grep '^hostname'
OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
debug1: Reading configuration data config_1
debug2: checking match for 'user foo' host random originally random
debug2: match not found
debug1: Reading configuration data ~/.ssh/config_2 << unmatched include
debug2: checking match for 'user bar' host random originally random
debug2: match found
debug1: Reading configuration data ~/.ssh/config_2 << matched include
debug2: checking match for 'user !foo,!bar' host uvw originally random
debug2: match not found
hostname uvw