WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
前言
今天正常 git push
推送代码到 github
的时候,出现了下面的内容:
原因
发生这种情况是因为在 2023 年 3 月 24 日,GitHub 更新了用于保护 GitHub.com 的 Git 操作的 RSA SSH 主机密钥,因为私钥曾短暂暴露在公共 GitHub 存储库中。如果您在该日期之前记得 GitHub 在 SSH 客户端中的先前密钥指纹,您将收到该消息。
解决办法一
您需要通过运行以下命令删除存储的密钥:
$ ssh-keygen -R github.com
完成后,您可以重新运行 git
您尝试的命令。这时应该询问您是否信任新的 SSH 密钥。输入 yes
即可。
可能不同的客户端询问的次数也不一样,我这边询问了两次,我输入了两次
yes
以后就好了。
解决办法二 【推荐】
总结方法二:就是生成并使用新的 ED25519 SSH 密钥。
生成并使用新的 SSH 密钥对
- 一个 ED 25519密钥,阅读ED25519 SSH Keys。
- RSA 秘钥,阅读RSA SSH密钥。
ED25519 SSH 密钥
Practical Cryptography With Go一书建议 ED25519 密钥比 RSA 密钥更安全、性能更好。
由于 OpenSSH 6.5 在 2014 年引入了 ED25519 SSH 密钥,它们应该可以在任何当前操作系统上使用。
您可以使用以下命令创建和配置 ED25519 密钥:
ssh-keygen -t ed25519 -C "<comment>"
带有引号注释 -C
(如电子邮件地址)的标志是标记 SSH 密钥的可选方式。
您会看到类似于以下内容的响应:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
第一个是问你密钥存放在哪个路径,默认是:~/.ssh/
下面,后面又会问你设置密码,一路回车就完事了;
如需指导,请看下面第三项【生成 SSH 密钥对的常见步骤】。
这样你就得到了最新的 ED25519 SSH
密钥了。
RSA SSH 密钥
如果您为 SSH 使用 RSA 密钥,美国国家标准与技术研究所建议您使用至少 2048 位的密钥大小。默认情况下,该 ssh-keygen
命令会创建一个 1024 位 RSA 密钥。
您可以使用以下命令创建和配置 RSA 密钥,如果需要,可替换为推荐的最小密钥大小2048
:
ssh-keygen -t rsa -b 2048 -C "email@example.com"
带有引号注释 -C
(如电子邮件地址)的标志是标记 SSH 密钥的可选方式。
您会看到类似于以下内容的响应:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
它这个问题也是:问你密钥存放在哪个路径,默认是:~/.ssh/
下面,后面又会问你设置密码,一路回车就完事了;
如需指导,请看下面第三项【生成 SSH 密钥对的常见步骤】。
注意:如果您有 OpenSSH 版本 7.8 或更低版本,请考虑与编码相关的问题。
生成 SSH 密钥对的常用步骤
无论您是创建ED25519还是RSA密钥,您都是从 ssh-keygen
命令开始的。此时,您将在命令行中看到以下消息(针对 ED25519 密钥):
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
如果您还没有 SSH 密钥对并且没有生成部署密钥,请接受建议的文件和目录。您的 SSH 客户端将使用生成的 SSH 密钥对,无需额外配置。
或者,您可以将新的 SSH 密钥对保存在不同的位置。您可以分配您选择的目录和文件名。您还可以将该 SSH 密钥对专用于特定主机。
在分配一个文件来保存您的 SSH 密钥后,您将有机会为您的 SSH 密钥设置一个密码:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
如果成功,您将看到 ssh-keygen
命令保存您的身份和私钥的位置的确认信息。
需要时,您可以使用以下命令更新密码:
ssh-keygen -p -f /path/to/ssh_key
每个 SSH 密钥算法的默认文件名
算法 | 公钥 | 私钥 |
---|---|---|
ED25519(首选) | id_ed25519.pub | id_ed25519 |
RSA(至少 2048 位密钥大小) | id_rsa.pub | id_rsa |
动态搜索广告(已弃用) | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa |
参考文档
Github 文档 - 生成新的 SSH 密钥并将其添加到 ssh-agent
——————————【完】——————————