我想根据某些条件设置不同配置的 ssh 连接。别名中的许多参数都是相同的。有没有办法避免在每个别名中重复它们?
在下面的示例中,x 是变量并且y = 1
是常量。理想情况下,y 应定义一次。
Match host foo exec c1
x = 1
y = 1
Match host foo exec c2
x = 2
y = 1
# Some more `Match host foo` for foo on different conditions
Host foo
x = 42
y = 1
在您发布的示例中,您可以放置
在整个片段之前。请参阅SSH 配置中的主机配置是否合并?您仍然可以
Host foo
在最后传递未由前面所有内容定义的x = 42
情况。x
重点是使用第一个相关的事件。好吧,除非手册中另有说明,否则将使用第一个相关事件。我们不知道你的
y
是什么。如果y
是可以指定多个值的参数,则“第一个获胜”规则不适用。我认为该规则确实适用于
y
. 在您发布的示例中,y = 1
从除下方之外的所有位置删除Host foo
也应该有效。我的意思是,如果没有Match host foo exec …
定义y
,则放置y = 1
在下面Host foo
将是第一个相关的出现foo
,无论它是放置在其他部分之前、之间还是之后Match
。一个有用的一般提示是:
(归功于这个答案。)
如果您确实需要
y = 1
在配置的许多地方(可能是因为y
“第一个获胜”不适用参数,因此答案的上述部分没有帮助),请将这一行放在单独的常规文件中,然后将Include
文件从所有地方的主配置。(来源:
man 5 ssh_config
。)例子:
其中
default-y
是~/.ssh/default-y
或/etc/ssh/default-y
,具体取决于代码片段是在用户配置文件(如~/.ssh/config
)中还是在全局配置文件(如/etc/ssh/ssh_config
)中。