我正在寻找一种方法来使用特定的CIDR块来匹配SSH客户端configuration中的主机(通常是~/.ssh/config
)。 例如,如果IP属于一定的范围,我有一个条目来转发通过堡垒主机的所有stream量,假设10.1.0.0/16
:
host 10.1.* proxycommand ssh -q bastion -W %h:%p
这工作得很好,但是如何添加一些不符合点符号的范围呢?
# doesn't work, unfortunately host 10.2.0.0/18 proxycommand ssh -q bastion-foo -W %h:%p host 10.2.64.0/18 proxycommand ssh -q bastion-bar -W %h:%p
手册中是否有一些我错过的东西,或者是一个聪明的脚本技巧,能够匹配这些主机IP范围?
与ssh_config文件中的模式匹配是作为基本模式匹配完成的,而不是作为networking/ CIDR匹配。 所以使用CIDR表示法是不行的。
手册页解释说:
模式由零个或多个非空白字符组成,
*
(匹配零个或多个字符的通配符)或?
(完全匹配一个字符的通配符)。
你可以做的最好的是使用一个以上的模式列表。 再次,从手册页:
模式列表是逗号分隔的模式列表。 模式列表中的模式可能会被前面的感叹号(
!
)所取代。
所以要覆盖你的两个/ 18网,你需要列出:
你的模式列表应该看起来像这样:
Host "10.2.?.*,10.2.??.*, 10.2.10?.*,10.2.11?.*,!10.2.128.*,!10.2.129.*,10.2.12?.*"