禁用远程主机对SSH公钥进行检查的方法是通过修改SSH客户端配置文件来实现。具体步骤如下:
1. 打开SSH客户端配置文件
在终端中打开SSH客户端配置文件 ~/.ssh/config (如果该文件不存在,可以创建一个)
vi ~/.ssh/config
2. 添加配置内容
在配置文件中添加以下内容:
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
- Host *:表示对所有主机都禁用公钥检查
- StrictHostKeyChecking no:表示禁用严格主机密钥检查
- UserKnownHostsFile=/dev/null:表示禁用对已知的主机密钥进行验证,并且将所有主机都视为未知主机
保存配置文件并退出。
示例说明
示例一:连接GitHub
假设有一台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”的主机,并对该主机禁用了公钥检查,这样我们就可以无交互地连接内网主机了。但需要注意的是,禁用公钥检查存在安全风险,因此在一定程度上降低了安全性。建议在非必须的情况下尽量不要禁用公钥检查。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:禁用远程主机对SSH的公钥进行检查的方法 - Python技术站