Git 提示 Permission denied (publickey),如何才能解决?

548 阅读2分钟

首先确认下你的Linux/Mac/Wins当前用户对于 git 工程所在的本地文件夹, 是否具有777权限,没有的话,先设置一下.

因为即使你把 root 用户的 ssh 加到 GitHub 后, 操作系统的子账户并不能具有 ssh 的权限.

如果具有777权限,可以进行下面的检查:

下面的方案前提是你对文件夹有777权限.

电脑只有一个git环境

如果你的电脑只有一个git环境,那么极大多数情况是由于 GitHub 账号没有设置 ssh 公钥信息所致。 前往 GitHub 网站的"account settings"

依次点击"Setting -> SSH Keys"->"New SSH key"

Title处填写“id_rsa.pub”或其他任意信息。 key处原样拷贝下面命令的打印 ~/.ssh/id_rsa.pub 文件的内容:

cat ~/.ssh/id_rsa.pub      # 控制台上输出内容
pbcopy < ~/.ssh/id_rsa.pub # 自动拷贝到粘贴板

如没有则按下述方法生成:

ssh-keygen -t rsa

输入文件名的地方输入可以输入自定义文件名,默认是id_rsa,然后一路回车......

注意如果自定义文件名的话,需要加一个config文件,下文有介绍。

最后,输入

ssh -T git@github.com

如果没有报错,

再尝试输出就应该有了

cat ~/.ssh/id_rsa.pub      # 控制台上输出内容
pbcopy < ~/.ssh/id_rsa.pub # 自动拷贝到粘贴板

或者说设置了 sshkey 还是 permission denied 怎么回事?

回到如下命令,检查当前配置的SSH对应的git账号;

ssh -T git@github.com

然后用如下命令(id_rsa对应目标账户的私钥)命令,制定目标Git账号

ssh-add -K ~/.ssh/id_rsa

电脑有多个git环境

如果尝试了上面的方法还是不行,那么可能你用了多个密钥,你在新建秘钥的时候使用了自定义的名称,比如 github_rsa,你需要再配置一个 config 文件

cd ~/.ssh/
vi config

输入以下内容:

Host github
    User git  
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa
    ServerAliveInterval 300
    ServerAliveCountMax 10

ESC+:wq保存退出

重新尝试以下命令即可搞定:

注意⚠️:@ 符号前后的参数要与上面 User 和 HostName对应上,一般公司内部的代码仓库都是自定义的,注意修改上面的参数然后再匹配下面的进行测试:

ssh -T git@github.com
ssh-add -K ~/.ssh/github_rsa