Heim > Fragen und Antworten > Hauptteil
P粉9261742882023-08-28 11:25:55
正如我之前在克隆 git 存储库导致错误 - 主机密钥验证失败。 fatal:远程端意外挂断,将GitHub添加到已知主机列表:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
P粉3126316452023-08-28 11:08:39
您正在通过 SSH 协议进行连接,如克隆 URL 上的 ssh://
前缀所示。使用 SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,如果主机密钥发生更改,则拒绝连接。这可以防止中间人攻击。
domain.example
的主机密钥已更改。 如果您觉得这不可疑,请通过编辑 ${HOME}/.ssh/known_hosts
删除 行,从本地缓存中删除旧密钥domain.example
或让 SSH 实用程序为您完成此操作
ssh-keygen -R domain.example
从这里,您可以自己记录更新的密钥
ssh-keyscan -t rsa domain.example >> ~/.ssh/known_hosts
或者,同等地,让 ssh
在您下次使用 git fetch
、git pull
或 git 连接时为您完成此操作推送
(甚至是普通的ssh domain.example
),在出现提示时回答“是”
The authenticity of host 'domain.example (a.b.c.d)' can't be established. RSA key fingerprint is XX:XX:...:XX. Are you sure you want to continue connecting (yes/no)?
出现此提示的原因是 domain.example
删除后不再位于您的 known_hosts
中,并且可能不在系统的 /etc/ssh/ssh_known_hosts 中
,因此ssh
无法知道连接另一端的主机是否真的是domain.example
。 (如果 /etc
中的密钥错误,则具有管理权限的人员将必须更新系统范围的文件。)
我强烈建议您考虑让用户也使用密钥进行身份验证。这样,ssh-agent
可以为了方便而存储密钥材料(而不是每个人都必须在每次连接到服务器时输入密码),并且密码不会通过网络传输。