기반 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