注:假设读者知道如何关联ssh key到Github账号。
场景
- 多个Github账号
- 希望通过ssh key关联到github账号
- 生成多个ssh key并关联到github账号后还是报
ERROR: Permission to .git denied to user
错误
关联第二个Github账号
假设Github账号名为accountName
。
生成ssh key
使用如下命令生成ssh key,your_email@example.com
替换成自己的邮箱,下图圈中的id_rsa_accountName
是ssh key的文件名,可以随便起,只要不替换已有的(一般为id_rsa)就行。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
配置ssh config文件
在ssh目录(~/.ssh)下,可以看到一个config
文件,如果没有可以新建一个,然后在文件最后添加如下配置:
Host accountName.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_accountName
第一行的accountName.github.com
可以随意起,不过需要符合域名命名,推荐使用Github用户名+.github.com
,下一步会用到。
最后一行的~/.ssh/id_rsa_accountName
,则对应上一步生成ssh key的文件路径。
替换远程仓库url
将远程仓库clone到本地后,或使用如下命令将本地关联到远程仓库后,需要替换成新的remote origin url
,即git@github.com:accountName/xxx.git
→git@accountName.github.com:accountName/xxx.git
。
# 关联远程仓库
$ git remote add origin git@github.com:xxx.git
# 查看配置信息,包括
$ git config --local --list
...
remote.origin.url=git@github.com:accountName/xxx.git
...
# 变更remote origin url
$ git remote set-url origin git@accountName.github.com:accountName/xxx.git
通过上面几步后,就可以正常push
等敏感操作了。
参考:
ERROR: Permission to .git denied to user
Multiple GitHub Accounts & SSH Config
Adding a remote
Changing a remote's URL
完!