前言
重新搭建了gitlab服務(wù)器來管理代碼橄妆。再加上自己的GitHub托管平臺右遭,碼云托管平臺,每個平臺都需要 SSH KEY 來登陸。這些平臺都使用同一個公鑰(id_rsa/id_rsa.pub 默認(rèn)生成的 私/公鑰)是否可以丸逸?答案肯定是可以的,但是有很多弊端寿弱,這里我就不說了馁痴。
添加、配置簿晓、管理多個公/私鑰眶拉。總有一些坑要踩過抢蚀,所以寫個文檔記錄下需要注意的地方和踩過的坑镀层。原文連接
添加多個 ssh key
1、新添加 ssh key
//為了保證后面只需要輸入名字首先切換到本機(jī)ssh目錄
cd ~/.ssh
//創(chuàng)建ssh-key
ssh-keygen -t rsa -C "yourname@email.com"
//為新生成的秘鑰命名皿曲,由于已經(jīng)在ssh目錄下了唱逢,所以只需輸入文件名
Enter file in which to save the key (/Users/admin/.ssh/id_rsa):id_ras_github
同樣的方式根據(jù)不同的平臺生成三個秘鑰對,目錄(~/.ssh)最后的結(jié)果如下:
//自己的 gitlab
id_rsa_yiliao
id_rsa_yiliao.pub
//碼云 gitee.com
id_rsa_mayun
id_rsa_mayun.pub
//GitHub github.com
id_rsa_github
id_rsa_github.pub
2屋休、設(shè)置ssh key的代理
- 1坞古、首先查看代理
ssh-add -l
若提示
Could not open a connection to your authentication agent.
則系統(tǒng)代理里沒有任何key,執(zhí)行如下操作
exec ssh-agent bash
若系統(tǒng)已經(jīng)有ssh-key 代理 ,可以刪除
ssh-add -D
-
2劫樟、代理中添加私鑰
默認(rèn)只讀取id_rsa痪枫,為了讓SSH識別新的私鑰织堂,需將其添加到SSH agent中:
ssh-add ~/.ssh/id_rsa_yiliao
ssh-add ~/.ssh/id_rsa_mayun
ssh-add ~/.ssh/id_rsa_github
ssh-add -l
2048 SHA256:ojXu/V77OR1muXEWtMJ0BLw3VQ7UVIfCkoKmZnIoa30 /Users/admin/.ssh/id_rsa_yiliao (RSA)
2048 SHA256:1XZBkfKzSc+WgXpqzPw2nuaVBMuIaFamdt+9i7HSOtE /Users/admin/.ssh/id_rsa_github (RSA)
2048 SHA256:uk0N6t4zmwFLf3ySBTBKYMzF9qD42ZxLGzGU8UrXBRY /Users/admin/.ssh/id_rsa_mayun (RSA)
- 3、編輯配置文件config
touch ~/.ssh/config
//或者
vim ~/.ssh/config
添加內(nèi)容
# yiliao
Host yiliao.com
HostName yiliao.com
IdentityFile ~/.ssh/id_rsa_yiliao
user git
# github
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
user git
# mayun
Host mayun
HostName gitee.com
IdentityFile ~/.ssh/id_rsa_mayun
user git
這里說明一下每個字段的意思:
# 服務(wù)器1
Host 別名(方便記憶)
HostName IP地址或者域名(可以寫假域名奶陈,但要在host文件中綁定ip地址)
Port 默認(rèn)是22可以不寫易阳,如果自己搭建的服務(wù)器監(jiān)聽的是其他端口這個參數(shù)必須聲明
IdentityFile 私鑰文件路徑
User 用戶名一般寫git就行
-
4、添加公鑰
這里以GitHub為例吃粒,其他平臺添加流程基本一樣潦俺。
通過cat命令查看公鑰內(nèi)容,并復(fù)制全部內(nèi)容(從ssh-rsa開始復(fù)制到最后郵箱結(jié)束徐勃,全部復(fù)制)
cat ~/.ssh/id_rsa_github.pub
添加步驟如下:
-
5事示、測試
測試是否可以SSH連接服務(wù)器一下幾種方式都可以:
ssh -T git@github.com (域名)
ssh -T git@config文件中的別名
ssh -T git@ip地址
這時候,如果提示:
admin ~/Desktop: ssh -T git@github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
ECDSA key fingerprint is SHA256:XkVfJu/1xvcPAHO4FLkTSZovag9e0isE3bBxu19bYtY.
Are you sure you want to continue connecting (yes/no)?
那么輸入yes僻肖,然后回車肖爵。(因為第一次訪問時known_hosts中沒有記錄,輸入yes回車下次就不會提示了臀脏,并保存到known_hosts中)
ssh -T git@xxx 這里的xxx是在config文件中的Host劝堪。找出SSH對應(yīng)的host。HostName就是git托管的平臺url谁榜。
若出現(xiàn)
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
則表示成功幅聘。若出現(xiàn)
permission denied (publickey)
請檢查github的ssh管理里添加的公鑰是否正確。
-
6窃植、修改host
如果沒有域名帝蒿,域名到期時只能通過ip地址去訪問git服務(wù)器,這個時候為了保證 ~/.ssh/config文件的一致性巷怜,可以設(shè)置host文件葛超。
vim /etc/hosts
添加 ip地址 域名
//添加ip地址(這里是假的ip地址) 域名
13.229.188.59 yiliao.com
13.229.188.59 gitee.com
13.229.188.59 github.com