Answers:
如gelraen所述,默认情况下ssh_config
不支持正则表达式,但您可以尝试以下类似的操作:
您可以在中使用完整的正则表达式ssh_config
。
IMO非常难以阅读和理解相关文档。我之所以了解这一点,是因为我拥有13年以上Linux经验和8年以上的使用经验ssh
。所以这是我的文档摘要:
man ssh_config
描述了一个称为 Match
exec
,让您使用任意的shell命令来确定匹配项TOKENS
就我而言,我最终在我的中使用了~/.ssh/config
:
Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
User USER
IdentityFile /path/to/identity/file
Hostname %h.fully.qualified.domain.name
测试必须使用像这样的棘手的东西来完成。并进行测试,您致电ssh -vvv HOSTNAME
。它将准确显示正在发生的事情,以及您的新产品Match
是否正确实施。
扩展Trevor的答案:
也可以使用更复杂的主机,例如匹配,foo123.123
并且foo10.10
在一条规则中不包含所用主机名的DNS条目:
Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
Port 1234 # just to show it can be paired with non-default ports too,
# see %p in man ssh_config
ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p
使用ProxyCommand通过Shell 处理%h的内容,并通过netcat连接到正确的端口。这样,您可以创建主机类别的预设,而无需创建单个条目。
man ssh_config
。