go get或git clone時 報[email protected]: Permission denied (publickey) 解決辦法

一、現象

二、原因分析

Permission denied (publickey) 沒有權限的publickey ,出現這錯誤一般是以下兩種原因

    • 客戶端與服務端未生成 ssh key
    • 客戶端與服務端的ssh key不匹配

三、解決辦法

我們新生成一個ssh key就可以了

依次執行如下命令

1、打開git bash,

右擊桌面空白處,選擇【git bash】

 

 

 2、進入ssh 路徑下

cd ~/.ssh

3、生成新的ssh key

輸入如下命令,[email protected]改爲自己的郵箱

ssh-keygen -t rsa -C "[email protected]"

然後回車,途中會讓你選擇生成的ssh key的存放目錄和輸入密碼,不用管,直接回車。

這裏有個坑,需要把原來生成的ssh key文件刪除,否則不會生成新key的時候,會報文件已存在而導致無法生成新的key。一般ssh key的文件路徑都是【C:\Users\username\.ssh\id_rsa】,其中username是你這個用戶的用戶名。如果沒找到,可以先執行如下命令,回車後,系統會告訴你路徑。

 

 

 

4、執行命令

ssh -v [email protected]

最後會出現

[email protected]: Permission denied (publickey).

 

5、執行命令

ssh-agent -s

知識點:

ssh-agent的角色就是幫忙存儲、查找併發送對應的指紋而已,也就是說它是一個連接的轉發人,扮演的是一個代理的角色。

使用ssh-agent後,可以通過ssh-add命令向ssh-agent註冊本機的私鑰,ssh-agent會自動推導出這個私鑰的指紋(實際上是ssh-add計算的)保存在自己的小本本里(內存),以後只要ssh連接某主機(某用戶),將自動轉發給ssh-agent,ssh-agent將自動從它的小本本里查找私鑰的指紋並將其發送給服務端(sshd端)。如此一來,ssh客戶端就無需再指定使用哪個私鑰文件去連接。

 

6、將新生成的ssh key添加到ssh-agent

ssh-add ~/.ssh/id_rsa

坑:

如果這時出現【Could not open a connection to your authentication agent.】

則先執行下【eval `ssh-agent -s`】,再執行【ssh-add ~/.ssh/id_rsa】就可以了

 

 

 

7、創建ssh key

打開剛剛生成的id_rsa.pub文件,複製裏面的內容

進入你的github賬號:https://github.com/settings/keys

settings→SSH and GPG keys→new SSH key,

 

 

 

title隨便取一個名字,然後將id_rsa.pub裏的內容複製到Key中,完成後Add SSH Key。

 

 

 坑:

如果添加key失敗,提示【Key is invalid. You must supply a key in OpenSSH public key format】格式錯誤。

則在bash下執行命令【cat id_rsa.pub】然後複製key,再去github上添加

 

 

 

 

 

 8、驗證

ssh [email protected]

成功了

 

9、再次執行git get,成功了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章