解决Git存在SSh key 仍报错 Permission denied (publickey)的问题

大概率是秘钥设置不对的问题

检查

首先检查有没有在 GitHub 上添加你本机的 SSH key (添加 SSH key)

在用户主目录下,看看有没有 .ssh 目录,如果有,再看看这个目录下有没有 id_rsaid_rsa.pub 这两个文件。如果已经有了,可直接跳到下一步。如果没有,打开 Shell(Windows 下打开 Git Bash),创建 SSH Key。

创建 SSH Key

1
ssh-keygen -t rsa -C "youremail@example.com"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可。

注意:如果需要配置多个 ssh-key
当终端出现Enter file in which to save the key (C:\Users\renyi/.ssh/id_rsa):时,在后面输入其他的文件,如: C:\Users\用户名/.ssh/gitlab。如果不配置,默认覆盖原来的 ssh-key,这样会使得使用原先配置 ssh-key 的项目失去权限,在操作时,报错Permission denied (publickey)

如果一切顺利的话,可以在用户主目录里找到.ssh 目录,里面有 gitlabgitlab.pub 两个文件,这两个就是 SSH Key 的秘钥对,gitlab 是私钥,不能泄露出去,gitlab.pub 是公钥,可以放心地告诉任何人。

关联

如果添加了还是出现这个问题,那么问题大概率就定位在了你本机的这个 git 仓库并没有和这个 SSH key 关联上。用下述方法解决:

1
ssh-add "C:\Users\用户名/.ssh/gitlab"

注意:这里 ssh-add 后面填的是私钥地址,如 mac 电脑是 /Users/用户名/.ssh/gitlab

若执行 ssh-add /path 出现这个错误: Could not open a connection to your authentication agent

1
2
ssh-add "C:\Users\用户名\.ssh\gitlab"
Could not open a connection to your authentication agent.

则先执行如下命令即可:

1
ssh-agent bash

最后将本次关联 ssh-key 关联到远程 master

1
git push -u origin master

完整关联命令如下:

1
2
3
ssh-agent bash
ssh-add "C:\Users\用户名\.ssh\gitlab"
git push -u origin master