有条件包含在 ssh_config 中

有条件包含在 ssh_config 中

根据ssh_config(5)语句Include可以放置在MatchorHost块内部来创建条件包含

包括:包括指定的配置文件。可以指定多个路径名,每个路径名可以包含glob(7)通配符,并且对于用户配置,可以~包含对用户主目录的类似 shell 的引用。通配符将按词汇顺序扩展和处理。~/.ssh如果包含在用户配置文件中或/etc/ssh包含在系统配置文件中,则假定没有绝对路径的文件位于 in 中。Include 指令可能会出现在 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

相关内容