提交代码到GitHub报错:Permission denied 的解决方案
本地项目上传到GitHub的步骤
提前需要准备好自己的GitHub账号,并且在自己电脑上安装配置好Git。准备好需要上传到GitHub的项目。这些都准备好了之后,执行以下步骤:
- 通过终端进入到项目的文件夹下,比如我有个my-simple-rpc项目,文件路径为:/Users/shuiyu/IdeaProjects/my-simple-rpc,在终端执行以下命令:
cd /Users/shuiyu/IdeaProjects/my-simple-rpc
git init
- 接着,通过终端执行如下命令。需要注意的是:xxx@xxx.com请替换为你的GitHub注册的邮箱:
ssh-keygen -t rsa -C "xxx@xxx.com"
执行ssh-keygen -t rsa -C "xxx@xxx.com"命令后首先需要选择生成密钥的存储路径,建议这里修改一下路径,防止项目变多之后会发生密钥覆盖的情况。如果不想修改路径的话可以直接回车。之后一路回车到底就可以完成密钥的生成过程。
- 执行如下命令,将生成的id_rsa.pub文件中密钥内容复制到剪贴板,注意:/xxx/xxx需要换成你生成的密钥的存储路径。
pbcopy < /xxx/xxx/id_rsa.pub
-
进入到GitHub官网,点击自己的头像,在下拉列表中选择Settings,然后选择SSH and GPG keys,点击New SSH key按钮创建一个新的SSH key,将剪贴板中的内容复制到Key中,并自定义一个Title后点击Add SSH key即可。
-
打开终端,输入如下命令测试一下是否链接GitHub成功:
ssh -T git@github.com
如果出现下图所示的输出,则表示已经成功连接到了GitHub。
- 最后,执行下面两条命令来修改一下自己的Git用户名和邮箱
git config --global user.name "your name"
git config --global user.email "your email address"
使用Git推送代码出现Permission denied的解决方法
有时候需要推送代码的项目比较多,造成SSH密钥失效的情况,会导致在推送代码到远程仓库时出现:Permission denied的情况。具体解决方法就是:
- 按照上述生成SSH密钥的步骤重新执行一变,生成一个新的SSH密钥:
ssh-keygen -t rsa -C "xxx@xxx.com"
- 紧接着执行命令:
ssh -v git@github.com
如果终端输出内容的最后两句出现:No more authentication methods to try. Permission denied (publickey).
则需要接着输入:
ssh-agent -s
- 然后在终端输入如下命令,添加ras:
ssh-add /xxx/xxx/id_rsa
命令执行后会出现:Identity added:xxxx,表示添加成功。
如果出现错误提示:Could not open xxxxx,需要执行命令:
eval `ssh-agent -s`
之后,再次执行命令
ssh-add /xxx/xxx/id_rsa
就可以了。
- 按照前面所说的代码推送到GitHub的步骤重新去GitHub官网创建新的SSH key,新Key添加完成后,可以在终端通过:ssh -T git@github.com命令来测试是否连接成功。