解决git clone报错Permission denied (publickey). fatal Could not read from remote repository
解决git clone报错Permission denied (publickey). fatal: Could not read from remote repository.
这个错误提示:
[email protected]: Permission denied (publickey). fatal: Could not read from remote repository. 说明你当前在用 SSH 方式通过 [email protected]:Learning-in-robotics/kinova_learning.git 去 clone,但 GitHub 拒绝了你的 SSH 公钥认证。也就是说,你的本地机器并没有配置好能让 GitHub 接受的 SSH 公钥,或者配置有误。
详细解决步骤
你可以按下面步骤操作:
步骤 1:检查本地是否已有 SSH 密钥
ls -al ~/.ssh 看是否存在 id_rsa + id_rsa.pub 或 id_ed25519 + id_ed25519.pub 等文件。如果有 .pub 公钥文件,说明可能已经生成过。
如果没有或不确定,就先生成一个新的(下面步骤)。
步骤 2:生成新的 SSH 密钥对(如果你还没有)
假设使用 ed25519(现代推荐):
ssh-keygen -t ed25519 -C "[email protected]"按提示回车使用默认路径 ~/.ssh/id_ed25519,可以设置 passphrase(也可以不设置,留空)。
如果你希望兼容老系统,也可以生成 RSA:
ssh-keygen -t rsa -b 4096 -C "[email protected]"成功后会有两个文件,例如:
~/.ssh/id_ed25519(私钥,不要泄露)~/.ssh/id_ed25519.pub(公钥,用于上传给 GitHub)
步骤 3:把公钥添加到 GitHub
- 打开
~/.ssh/id_ed25519.pub(或你生成的.pub文件),复制里面的全部内容(以ssh-ed25519 AAAA...开头) - 在 GitHub 网站,登录 → 右上角头像 → Settings → SSH and GPG keys → New SSH key → 填写一个 Title(如 “my laptop”) → 在 Key 栏粘贴你的公钥 → 点击 “Add SSH key”
确保你添加的是 ssh auth 公钥(不是用于签名的密钥),并且没有头尾多余空格或换行。
步骤 4:启动 SSH agent 并加载私钥
# 启动 ssh-agent(大多数系统默认就有)eval"$(ssh-agent -s)"# 然后加载你的私钥(假设用 ed25519 名称) ssh-add ~/.ssh/id_ed25519 如果使用 RSA 或其他名称,请改为相应路径。
你可以用命令 ssh-add -l 来查看已加载的密钥列表。
步骤 5:测试 SSH 连接是否成功
在终端运行:
ssh -T [email protected] 期望输出类似:
Hi <你的 GitHub 用户名>! You've successfully authenticated, but GitHub does not provide shell access. 如果这个命令成功,说明 SSH 设置没问题了。