1. 生成密鑰
ssh-keygen -t rsa -C "jaynaruto@qq.com"
//如果只有一對密鑰,建議不要修改默認的密鑰名稱,即一直按回車即可
此命令會在你當前用戶的個人目錄下(如我當前用戶為savokiss,就在/home/savokiss/.ssh,root則為/root)生成一對密鑰
默認的名字為id_rsa和id_rsa.pub
2. 復制公鑰
復制id_rsa.pub中的內容到你git服務器(gitlab,coding,github)的配置ssh公鑰的地方
公鑰內容類似:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2czeS+H5+dSOA1F2QyOCF126LE2cfGzCfqll73i+C61o2VrRrQAqeadELSUeUYJRZkoNmBn/4ZMV7A0ZLvIpsMsXTkpQ+dE1rUtN/D01nFEoLPABsVb0KctGOozVWKXme7WTAdzGlW8Lyc6e/oOQZ71GXbthneh8FH/NBiZH2NsbFLePeq/YoO8RLoDK9WusOYotmqLvah99KoB2jm/dZ8G3Q36fXoVAo46NRbp1mdYyjwd7k2XUylQWbeWXpxP7Plr2VPQyrOuCxCaL9dzrZkWFhhoDOlpKppDoeCN6hUiMBz/eoOMw1Wlj+wtbpWPLJqv0rNn2+pO3BrMUcIMpw== jaynaruto@qq.com
注: 如果僅僅需要部署,將以上公鑰配置到項目的 deploy key 部分即可
3. 測試連接
以coding為例:
ssh -vT git@git.coding.net
這里的-v是顯示詳細信息
具體會顯示很長的信息提示你連接是否成功,成功的話會有一個successfully!
Hello savokiss You've connected to Coding.net by SSH successfully!
4. linux用戶的問題
上面測試成功了,但是我在`/usr/share/nginx/html`中clone repo竟然還是提示我 Permission denied (publickey)
原因:
上面我用的一直都是savokiss用戶,具有sudo權限,而我生成密鑰的時候沒有加sudo,就生成在了`/home/savokiss/.ssh`下面
但是我clone repo的目錄是`/usr/share/nginx/html`,都是屬於root的,所以我clone的時候只能加上sudo
就是這個sudo造成ssh自動去`/root/.ssh`下面查找`id_rsa`私鑰!!!
所以我只能用sudo再生成一對密鑰了。。o(╯□╰)o
5. done
步驟就這么簡單,以前總是遇到問題是因為總是修改它默認的密鑰名稱,導致ssh在讀取默認配置(id_rsa)的時候失敗
簡單來講不要改它默認的名字就好!
當然如果你有多個密鑰要管理,可以改,然后參考下面的文章:
refer:
多 SSH Key 管理技巧與 Git 多賬戶登錄問題(小胡子哥)
