在公司探索新知识(摸鱼)时,我们一般会需要在GitHub上维护维护自己的小仓库。 这样如果使用原来的配置就会发生Push代码时Permission Denied了。 所以我们有以下几步: 公司电脑是Mac,所以以下内容均为Mac上的操作,但不同操作系统其实大同小异。
不同仓库配置不同的提交用户信息
我们在公司电脑上主要还是提交公司的代码,所以为了方便,git的global用户信息可以设置为公司要求的name和email。 在自己的仓库下配置git账号信息可以覆盖掉全局的。
cd <你的仓库地址>
git config user.name <你的GitHub账户名>
git config user.email <你的GitHub账户邮箱>
生成不同的ssh密钥
ssh-keygen -t rsa -C "<GitHub邮箱>" -f ~/.ssh/id_rsa_github
进入ssh文件夹,可以看到我本地生成了两个,一个是默认名称id_rsa,一个是GitHub的id_rsa_github,分别还有它们的公钥。
创建ssh配置文件
在上图可以看到我的ssh文件夹下有config文件,如果你从来没有配置过,那你的本地可能是没有这个文件的。
vim ~/.ssh/config
Host git@github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
在远程仓库添加ssh公钥
GitHub官方教程
cat ~/.ssh/id_rsa_github.pub
- 在任何页面的右上角,单击您的个人资料照片,然后单击 Settings(设置)。
- 在用户设置侧边栏中,单击 SSH and GPG keys(SSH 和 GPG 密钥)。
- 单击 New SSH key(新 SSH 密钥)或 Add SSH key(添加 SSH 密钥)。
- 刚刚复制的公钥内容粘贴到下图Key中,Title写上方便你自己认识这个密钥的描述性内容
测试ssh链接
ssh -T git@github.com
配置仓库远程地址
git remote add origin https://github.com/<你的GitHub账户名称>/<你的仓库名称>.git
git remote add origin git@github.com:<你的GitHub账户名称>/<你的仓库名称>.git
使你的ssh密钥持续生效
但我之所以写下这篇文章,就是因为我不是第一次配置了。 为了方便你以后不用再麻烦,请继续看。 当你重启一次电脑后,你的ssh密钥就没有被托管了,push代码的时候就会Permission Denied。 当然你可以重复以上步骤解决,但我们希望有更优雅的解决方式。原因在这个文章里说了,感兴趣的可以了解一下。 是否必须每次添加ssh-add
我们可以通过ssh-add命令将我们的ssh密钥重新添加到ssh-agent进行代理托管
ssh-add ~/.ssh/id_rsa_github
但是仍然会出现重启后失效的问题,所以我们可以将这个命令添加到命令行配置文件中。
vim ~/.zshrc
ssh-add ~/.ssh/id_rsa_github
|