標籤:

一個git客戶端可以使用不同的郵箱賬號生成多個ssh key以使用多個伺服器,且相互間不影響?

情況是這樣的:mac os ,使用git 進行代碼管理,伺服器使用的是公司內部的代碼伺服器。自己的電腦上已經使用ssh -kengen ...生成了key 並配置在公司的代碼伺服器上,並正常使用。現在我想使用github,但是又擔心會和正在使用的配置有衝突,不知道在這樣的情況下如何使用github,且不影響之前的使用?


修改這個文件

~/.ssh/config

如下:

Host github.com
User git
IdentityFile ~/.ssh/github_rsa

Host code.csdn.net
User git
IdentityFile ~/.ssh/id_rsa


我也是剛剛遇到這個問題,本著知其然知其所以然的目的,稍微研究並記錄一下,共享一下給需要的人。

之前一直對各種 git 服務需要的 ssh key 的認證都是懵懵懂懂的狀態,直到我偶爾用了多個git服務,比如 github 、bitbucket ,出現了好幾次無法提交和拉取的問題,我才意識到我多次修改了 id_rsa 文件,為不同的 git 服務創建 ssh key 的同時也覆蓋了之前 git 伺服器的 key 。心想肯定有辦法讓多個服務共存吧,於是 Google 了一番,方法並不難。

步驟

創建密鑰

1.創建一個密鑰

$ ssh-keygen -t rsa

2.輸入保存ssh key 密鑰的文件名稱 id_rsa_github 。

Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/id_rsa_aaa

3.輸入兩次密碼,要求最低不能低於8位。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

重複上面的步驟可以創建多個密鑰,比如你有多個git賬戶

id_rsa_github
id_rsa_bitbucket
id_rsa_oschina

添加到 ssh-agent

用ssh-add命令把創建的密鑰添加到 ssh-agent 里

$ ssh-add ~/.ssh/id_rsa_github
$ ssh-add ~/.ssh/id_rsa_bitbucket
$ ssh-add ~/.ssh/id_rsa_oschina

你可以用ssh-add -l來查看一下添加效果,一般會出現下面的提示信息

2048 SHA256:ueU7NSaLTzfKNMKL3EVkBKqK2/bvr/ewdNVTmBYZtxg /Users/YourName/.ssh/id_rsa_github (RSA)
2048 SHA256:xGAMHLe5Un5LLWiXp6GI84CVn23sD9g+EQBjXMQP34YA /Users/YourName/.ssh/id_rsa_bitbucket (RSA)
2048 SHA256:lJfTU9j6JfkMSM4vJpk5BdsARzkRA/d05aUnc2BdBeg /Users/YourName/.ssh/id_rsa_oschina (RSA)

這就證明你之前添加都已經生效了。

當然如果這裡出現什麼問題,你也可以用 ssh-add -d 來刪除某個id_rsa

保存公鑰到 git 服務

打開對應的git服務網站管理頁面把對應的公鑰提交保存到代碼管理伺服器(.pub 結尾)

添加 ssh 配置文件

在 ~/.ssh 目錄創建 config 配置文件

nano ~/.ssh/config

添加配置信息

Host github.com
HostName github.com
User git
IdentityFile /Users/YourName/.ssh/id_rsa_github

Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile /Users/YourName/.ssh/id_rsa_bitbucket

Host oschina.net
HostName oschina.net
User git
IdentityFile /Users/YourName/.ssh/id_rsa_oschina

好了,這樣你就可以任意穿梭於多個git伺服器而不用擔心ssh key的問題了。


何來衝突?

SSH Key也不能稱之為配置吧.


為什麼需要創建多個SSH key。只要不怕泄漏,同一對key可以用於多個git伺服器。SSH key只是用於加密訪問的,只要把伺服器上的公鑰能夠和本地的私鑰配對就行了。


不覺得麻煩的話,可以看下廖雪峰老師的git教程的相關章節,會完美解決題主的疑問的


推薦閱讀:

如何有效利用GitHub student pack中的工具?

TAG:Git | GitHub |