Git如何配置多個SSH-Key

0. 爲什麼有此需求

在實際項目開發過程當中,咱們除了有公司gitlab的SSH-key須要配置外,可能還有一些本身的項目放在github之上。在這樣的使用情形下就須要配置不一樣的SSH-Key來對應不一樣的項目環境。git

1. 生成SSH-Key

以windows環境爲例。打開Git Bash,輸入以下命令,生成SSH-Key:github

ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa複製代碼

默認生成SSH-Key在C:\Users\你的電腦name\.ssh路徑下;固然,你也能夠在「-f」後面指定你本身想要生成的路徑,不過通常沒有必要。以本人電腦爲例,即爲C:\Users\OneDay\.sshshell

其中「id_rsa」能夠更改爲你本身喜歡的名稱,用以區分不一樣的SSH-Key;默認名稱爲「id_rsa」。windows

輸入此命令,點擊三下「回車鍵」後,即會在~/.ssh/目錄下,生成id-rsa和id-rsa.pub;其中id-rsa爲私鑰,id-rsa.pub爲公鑰。咱們將id-rsa.pub中的內容粘貼到git服務器的SSH-Key的配置中。bash

注意:即便是同一個email地址,在不一樣的電腦上,都須要從新生成SSH-Key;而後再添加到git服務器的SSH-Key配置中。服務器

我曾想固然地覺得,同一個email地址生成的公鑰和私鑰,能夠拿到任意電腦上隨意使用......[手動捂臉]其實,並不容許這種操做。我仍是太天真啦.....ssh

2. 添加私鑰

ssh-add ~/.ssh/id_rsa $ ssh-add ~/.ssh/github_rsa複製代碼

使用該命令,能夠同時添加多個私鑰,命令之間,需用「$」隔開;若是執行ssh-add時提示"Could not open a connection to your authentication agent",能夠執行以下命令: ide

ssh-agent bash複製代碼

而後再運行上面的命令便可。你還能夠執行以下操做:gitlab

# 能夠經過 ssh-add -l 來確私鑰列表
ssh-add -l
# 能夠經過 ssh-add -D 來清空私鑰列表
ssh-add -D複製代碼

3. 建立並修改配置文件

在 ~/.ssh 目錄下經過以下命令,新建一個config文件:測試

touch config複製代碼

打開並編輯「config」文件,添加以下內容:

# gitlab
Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa複製代碼

4. 測試

執行以下命令,查看咱們配置是否成功:

ssh -T git@github.com複製代碼

若是成功輸出歡迎語句,則表示配置成功。例如:

Hi hdszylcd19! You've successfully authenticated, but GitHub does not provide shell access.複製代碼

這裏是以github爲例。固然,你也須要試一試連接公司的gitlab,這裏就再也不展開啦。

若是遇到錯誤的話,則可使用以下命令,查看詳細信息,定位具體緣由:

ssh -vT git@github.com複製代碼
相關文章
相關標籤/搜索