1. 程式人生 > >Mac碼雲Permission denied(publickey)問題解決

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!排除問題~