一個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
何來衝突?
SSH Key也不能稱之為配置吧.為什麼需要創建多個SSH key。只要不怕泄漏,同一對key可以用於多個git伺服器。SSH key只是用於加密訪問的,只要把伺服器上的公鑰能夠和本地的私鑰配對就行了。
不覺得麻煩的話,可以看下廖雪峰老師的git教程的相關章節,會完美解決題主的疑問的
推薦閱讀: