禁用远程主机对SSH公钥进行检查的方法是通过修改SSH客户端配置文件来实现。具体步骤如下:
在终端中打开SSH客户端配置文件 ~/.ssh/config (如果该文件不存在,可以创建一个)
vi ~/.ssh/config
在配置文件中添加以下内容:
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
保存配置文件并退出。
假设有一台Ubuntu主机需要从GitHub拉取代码并执行构建部署等操作。如果不禁用公钥检查,可能会在第一次连接时遇到以下错误:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
这个提示会在 SSH 连接时出现,告诉你当前连接的主机没有在本地 SSH 客户端的证书列表中,会询问是否要添加该主机并信任其 SSH 证书。如果选择“yes”,会将主机添加到本地证书列表,以前会对该主机进行验证。由于常规的 SSH 连接大多数情况下都是交互式的,这个提示并不会对正常的操作产生太多影响。但是,如果需要通过脚本或其他工具自动化执行 SSH 连接,这个交互环节显然是不利于执行的。
为了解决这个问题,可以通过禁用公钥检查来实现自动化 SSH 连接,示例如下:
Host github.com
User git
Hostname github.com
IdentityFile ~/.ssh/id_rsa
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
在上面的示例中,添加了一个名为“github.com”的主机,并对该主机禁用了公钥检查,这样我们就可以无交互的方式连接 GitHub 了。
假设需要连接一个内网主机,该主机可能无法被任何外部计算机所访问,因此在首次连接该主机时可能会出现以下错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
这样的错误提示意味着远程主机的 SSH 公钥被修改或更换过,因此需要重新验证。如果确定公钥是正确的,可以通过禁用公钥检查来实现 SSH 连接,示例如下:
Host internal_host
User john
Hostname 192.168.1.10
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
在上面的示例中,添加了一个名为“internal_host”的主机,并对该主机禁用了公钥检查,这样我们就可以无交互地连接内网主机了。但需要注意的是,禁用公钥检查存在安全风险,因此在一定程度上降低了安全性。建议在非必须的情况下尽量不要禁用公钥检查。
本文链接:http://task.lmcjl.com/news/13746.html