情况说明
在github和gitlab之间频繁切换,又因为使用https每次push都要输入username和password实在是老火,又在https和ssh之间转换,有时候用的公司的email,有时候用的QQ email,有时候又切换的gmail。好嘛,自己作,经常都能遇见执行clone或者push操作是出现permission denied(publickey)的问题,这次一定要铭记,写下解决过程下次直接翻。
解决方式
首先要申明我本地是有publickey公钥的,所以我接下来的一系列说明都是针对本地有公钥的情况。
其实github上也有详细的配置SSH秘钥的说明,我只是不想每次都读一遍英文,麻烦,所以中文写一遍大概流程。
针对我这种情况,肯定是先检测本地的秘钥
- 打开git bash
$ ls -al ~/.ssh //检测本地的.ssh文件并列举出来
需要注意的是,如果有,文件名字会是以下之一
id_rsa.pub //我是这个
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
如果没有任何反应,不好意思,你可能得移步自己生成秘钥,然后按文档教程执行后续操作。
当然,咱们这是有的,那就接着下一步添加SSH key到ssh代理
- git bash命令
$ eval $(ssh-agent -s)
Agent pid 59566 //这里会自动显示出pid
- 添加SSH私钥到代理,这里根据你的文件名字替换命令中的
id_rsa
$ ssh-add ~/.ssh/id_rsa
- 复制秘钥到粘贴板
$ clip < ~/.ssh/id_rsa.pub
来到github,头像右键——Setting——SSH and GPG keys,点击New SSH key,Title随意填写,Key选项框中就把刚才复制的秘钥内容粘贴进去就可以,注意是以ssh-rsa开头
大功告成,现在再试试clone和push应该就没问题了