我想告诉我的 OpenSSH 客户端(linux)忽略给定 IP 地址范围的主机密钥验证,可以吗?
背景:在将服务器移动到生产 IP 之前,我们使用此 DHCP 范围来构建服务器,因此我会定期收到那些 SSH 警告,并且每次都必须删除有问题的密钥......
答案1
相当常见的用例是将其放在你的ssh_config
( ~/.ssh/config
)中:
Match exec "ping -q -c 1 -t 1 %n | grep '192\.168\.'"
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
根据答案openssh-unix-dev
答案2
如果您Host
的 ssh 配置 ( ~/.ssh/config
) 文件中有一些条目作为实际HostName
条目的别名,那么您需要将此块放在配置文件的最底部。
Host alpha
HostName alpha.example.com
Match exec "ping -q -c 1 -t 1 %h | grep '10\.0\.'"
StrictHostKeyChecking no
UserKnownHostsFile none
这与@Jakuje 的回答只有一点点不同。关键的区别在于确保Match
条目是文件中的最后一个条目,并且命令ping
使用的是%h
而不是%n
。
答案3
根据其他答案,这里有一个对我有用的例子视窗使用OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
。
Match exec "ping -n 1 -w 25 %n | findstr 192\.168\. > nul"
StrictHostKeyChecking no
UserKnownHostsFile none
答案4
当您想要更多的控制权并稍微缩小范围时。
Host 192.168.8.* 10.10.14*.* *.vm.my-net.com
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null