一、現象
二、原因分析
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、驗證
成功了
9、再次執行git get,成功了