Mac碼雲Permission denied(publickey)問題解決
前言:筆者曾在本機部署多個公鑰(ssh key),一個是自己的碼雲賬號使用,一個是公司碼雲賬號使用。現在準備clone公司的新專案,發現出現以下錯誤:
執行命令: git clone [email protected]:xxxxx/xxx-xxx.git
錯誤提示:
- Cloning into 'xxx-xxx'...
- Permission denied (publickey).
- fatal: Could not read from remote repository.
- Please make sure you have the correct access rights
- and the repository exists.
筆者第一時間就想到說之前部署多個公鑰可能導致此問題的出現.
從錯誤提示中我們可以發現公鑰已經失去作用(不被允許,且我們的碼雲上的公鑰還存在)
(一)我們驗證一下我們的猜想:
執行命令:ssh -T -v [email protected]
果然,有如下錯誤:
- OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
- debug1: Reading configuration data /etc/ssh/ssh_config
- .......(省略n多提示)
- debug1: Authentications that can continue: publickey
- debug1: Next authentication method: publickey
- debug1: Trying private key: /root/.ssh/id_rsa
- debug1: Trying private key: /root/.ssh/id_dsa
- debug1: Trying private key: /root/.ssh/id_ecdsa
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC9QViCuZYHM1QMLNfvaH2/C13U+HiWegRIEPKvPcQEdebug1: Trying private key: /root/.ssh/id_ed25519
- debug1: No more authentication methods to try.
- Permission denied (publickey).
(二)錯誤原因
提示資訊表明路徑 ~/.ssh下id_rsa檔案存在,並且提供public key,然而無法和網站中的ssh-key匹配上。於是程式轉而尋找!/.ssh路徑下的id_dsa檔案,id_ecdsa檔案,id_ed25519檔案,看它們是不是能提供新的public key。檢視一下~/.ssh,會發現下面根本不存在id_dsa,id_ecdsa,id_ed25519檔案。 出錯的原因其實在於我們更新了本地的ssh key,然而網站上的ssh key還為舊值,所以匹配不上,就報錯Permission denied (publickey)
(三)解決問題
(1)開啟~/.ssh/id_rsa.pub(.pub為公鑰檔案,id_rsa為私鑰檔案),複製裡面的內容
(2)新增到碼雲上的個人>安全設定>ssh公鑰
(3)再次測試$ ssh -T [email protected],提示
Hi xxx! You've successfully authenticated, but GITEE.COM does not provide shell access.
且執行命令: git clone [email protected]:xxxxx/xxx-xxx.git成功
Ok!排除問題~