因為開了兩個github賬號携兵,需要兩個SSH進行上傳。在分別進行了SSH綁定之后迄本。卻一直顯示permisson denied聘萨。接下來說下具體的坑和解決辦法。
問題描述
我的Github賬號有兩朦促,姑且這么叫
- usera
- userb
usera是很久之前開的膝晾,userb是現(xiàn)在才開的。之前都用的usera务冕,對應(yīng)電腦上也是usera的SSH Key血当。這次git init之后,想傳repo到userb上去。我給userb生成了SSH Key并上傳到了對應(yīng)賬號臊旭,但Push時:
Permission to userb/blog.git denied to usera.
根據(jù)這一篇的表述落恼,說是不同賬號要設(shè)置不同的ssh config。具體來講离熏,是在.ssh/config中寫入:
Host github.com-usera
HostName github.com
User usera
PreferredAuthentications publickey
IdentityFile ~/.ssh/usera_rsa
IdentitiesOnly yes
Host github.com-userb
HostName github.com
User userb
PreferredAuthentications publickey
IdentityFile ~/.ssh/userb_id_rsa
IdentitiesOnly yes
然后執(zhí)行
ssh-add ~/.ssh/usera_rsa
ssh-add ~/.ssh/userb_rsa
最后改相應(yīng)repo下的config
git config user.name "userb"
git config user.email "userb@gmail.com"
這么一大通操作后佳谦,我繼續(xù)Push,又得到了
Permission to userb/blog.git denied to usera.
我:滋戳?钻蔑??
我懷疑是不是git config不對奸鸯。執(zhí)行了 git config --get [user.name]
和 git config --get [user.email]
咪笑。返回的都是userb。我甚至改了全局的config娄涩,依然得到了
Permission to userb/blog.git denied to usera.
……
我又執(zhí)行了 git config -l
看看窗怒,發(fā)現(xiàn)username有兩行。前面的一行值為usera蓄拣,后面一行為userb扬虚。然后我查看git config -e
,又確實只有一行是我剛設(shè)置的球恤。get user.name也返回userb 孔轴。
然后我又查,stackoverflow上不少人遇到了這個問題碎捺。有人說,這是Xcode Cache的鍋贷洲,自動存儲了密碼收厨,去keychain里清除密碼就好了。
我按步驟清了密碼的优构,又得到了
Permission to userb/blog.git denied to usera.
很明顯不是密碼的問題诵叁。再說我都多久沒用蘋果自帶的的鑰匙串了,我快瘋了钦椭,就沒有一個方法可以讓這個repo變成userb嗎拧额??彪腔?
終于侥锦,看到有人說,強行添加Remote orgin的賬號有用德挣,這么試了一下
git config -e
強行加賬號
remote="<https://userb@github.com/userb/blog.git>..."
然后輸入密碼恭垦,然后終于push成功了!
這個時候我又查看了一下git config
git config -l
發(fā)現(xiàn)user.name只剩一行了。
為什么SSH沒有生效
其實這是個非常低級的錯誤番挺。因為我使用的遠程倉庫是http協(xié)議(https://github...)唠帝,不是SSH協(xié)議(git@github.com)。當(dāng)然改SSH是沒有用的玄柏。
使用http協(xié)議襟衰,在使用多個賬戶需要加上這個
git config --global credential.github.com.useHttpPath true
即便是使用ssh協(xié)議,在執(zhí)行上一節(jié)的步驟后粪摘,也還需要在git config -e里編譯remoteURL瀑晒,與ssh config中的Host值對應(yīng)。
[remote "origin"]
url=git@github.com-userb:userb/xxx.git
參考: