注:假設(shè)讀者知道如何關(guān)聯(lián)ssh key到Github賬號(hào)。
場(chǎng)景
- 多個(gè)Github賬號(hào)
- 希望通過ssh key關(guān)聯(lián)到github賬號(hào)
- 生成多個(gè)ssh key并關(guān)聯(lián)到github賬號(hào)后還是報(bào)
ERROR: Permission to .git denied to user錯(cuò)誤
關(guān)聯(lián)第二個(gè)Github賬號(hào)
假設(shè)Github賬號(hào)名為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"

generate ssh key
配置ssh config文件
在ssh目錄(~/.ssh)下,可以看到一個(gè)config文件,如果沒有可以新建一個(gè),然后在文件最后添加如下配置:
Host accountName.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_accountName
第一行的accountName.github.com可以隨意起,不過需要符合域名命名,推薦使用Github用戶名+.github.com,下一步會(huì)用到。
最后一行的~/.ssh/id_rsa_accountName,則對(duì)應(yīng)上一步生成ssh key的文件路徑。
替換遠(yuǎn)程倉(cāng)庫(kù)url
將遠(yuǎn)程倉(cāng)庫(kù)clone到本地后,或使用如下命令將本地關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)后,需要替換成新的remote origin url,即git@github.com:accountName/xxx.git→git@accountName.github.com:accountName/xxx.git。
# 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
$ 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
完!