【GitHub】【Windows】Permission denied (publickey) 错误
【GitHub】【Windows】Permission denied (publickey) 错误
问题描述极其原因分析
遇到的错误:
Cloning into 'XXXXXX'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.
错误的本质是: 你试图通过 SSH 协议访问 GitHub,GitHub 使用 SSH 公钥加密机制来验证用户身份,但 GitHub 无法验证你的身份。
具体错误原因分类(主要):
- 没有配置 SSH 密钥对,本地计算机上没有生成 SSH 公钥和私钥。
- GitHub 账户未添加你的公钥:需要将本地生成的公钥,通常是 .ssh/id_rsa.pub 或 .ssh/id_ed25519.pub 的内容复制并添加到 GitHub 的 SSH Keys 设置中。
解决方案
-
下载安装 Git Bash: 在 Windows 上处理 Git 和 SSH 问题,强烈建议使用 Git Bash,Git Bash 提供了与 Linux/Mac 终端类似的环境,包含完整的 SSH 工具链。【参考安装】
-
检查现有 SSH 密钥: 在 Git Bash 终端中,输入以下命令来检查是否已经生成过 SSH 密钥。
ls -al ~/.ssh
查看输出中是否包含以下文件或类似名称:id_rsa (私钥);id_rsa.pub (公钥);id_ed25519 和 id_ed25519.pub (更新的加密算法)。
-
生成新的 SSH 密钥对: 如果没有密钥,或者想新建一个,执行以下命令。
ssh-keygen -t ed25519 -C "your_email@example.com"
>"your_email@example.com" 只是个标签,方便识别,将 其替换为自己注册 GitHub 时使用的邮箱。
系统会提示你 “Enter file in which to save the key”(输入保存密钥的文件)。直接按回车使用默认路径 (C:\Users[你的用户名].ssh\id_ed25519)。
接着会提示 “Enter passphrase (empty for no passphrase)”(输入密码短语,可为空)。你可以直接按回车设置为空密码,或者为了安全性设置一个密码。
成功后,会看到密钥的随机艺术图案:
-
复制公钥内容: 在 Git Bash 中,使用 cat 命令显示并手动复制公钥文件的内容。
cat ~/.ssh/id_ed25519.pub
复制完整的输出内容,它应该以 ssh-ed25519 开头,以你的邮箱结尾。不要添加任何换行或空格。
也可以用记事本直接打开公钥文件 (C:\Users[你的用户名].ssh\id_ed25519.pub) 来复制内容。
-
在 GitHub 中添加密钥:
登录 GitHub,点击右上角你的头像,选择 Settings;
在左侧边栏中,点击 SSH and GPG keys,点击绿色的 New SSH key 按钮;
在 “Title” 字段中,为这个密钥起一个描述性的名称(例如 “Windows Desktop”),在 “Key” 字段中,粘贴你刚才复制的公钥内容,点击 Add SSH key。
完成验证就行。
-
测试 SSH 连接: 回到 Git Bash,测试是否能够通过 SSH 成功认证到 GitHub。
ssh -T git@github.com
如果一切配置正确,你会看到如下成功信息: