![在 sshknown_hosts 中为许多服务器 ID 提供相同公钥的紧凑方法](https://linux22.com/image/165033/%E5%9C%A8%20sshknown_hosts%20%E4%B8%AD%E4%B8%BA%E8%AE%B8%E5%A4%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%20ID%20%E6%8F%90%E4%BE%9B%E7%9B%B8%E5%90%8C%E5%85%AC%E9%92%A5%E7%9A%84%E7%B4%A7%E5%87%91%E6%96%B9%E6%B3%95.png)
known_hosts 文件的条目格式如下:
{server-id} {signature-algorithm} {public-key-string} {comment}
我使用的系统有许多共享相同的机器{公钥字符串}但有很多,几乎 7000 个不同的{服务器 ID},我想知道是否可以使条目更紧凑?
我知道我可以指定所有这些以逗号分隔,例如:
{server-id1},{server-id2},... {signature-algorithm} {public-key-string} {comment}
但有近 7000 个这样的 {server-ids} 及其 IP 和别名。
{server-ids} 的命名模式类似于:
a01b01c01d01
a01b01c01d02
...
a01b01c02d01
...
a08b11c06d12
known_hosts 是否有一些紧凑的语法可用?例如:
a[01-08]b[01-11]c[01-06]d[01-12] {signature-algorithm} {public-key-string} {comment}
有人能告诉我如何实现这一目标吗?
答案1
提交问题后,我注意到 sshd 手册中有一个类似文件(ssh_known_hosts)的条目。
man sshd
手册指出:
主机名是一个以逗号分隔的模式列表(“*”和“?”充当通配符);每个模式依次与规范主机名(对客户端进行身份验证时)或用户提供的名称(对服务器进行身份验证时)进行匹配。模式前面也可以带有 '!'指示否定:如果主机名与否定模式匹配,则即使它与该行中的另一个模式匹配,也不会(被该行)接受。主机名或地址可以选择括在“[”和“]”括号内,然后跟“:”和非标准端口号。
由于 ssh_known_hosts 的文件格式与known_hosts 匹配,因此我的问题的答案是使用通配符:
a0?b??c0?d??,192.168.*.* {signature-algorithm} {public-key-string} {comment}
然而,这仍然不仅仅限制我想要的值,因此如果有人知道如何进一步限制它,请告诉我。
a0?b?c0?d??也可以是 a0ibx3c0wdxy