為什么有這種需求?
在我們開發過程中,可能會遇到使用同一台機器,既要向公司git服務器提交代碼,也要向gitlib或者gitee等
git倉庫提交代碼,2個倉庫設置的用戶名信息,不一樣,此時需要用到多個ssh-key管理.主要包含以下幾個步驟.
生成對應的私鑰公鑰
1. 生成github.com對應的私鑰公鑰
ssh-keygen -t rsa -C xxx@126.com -f ~/.ssh/github_rsa
**2. 同樣的方式生產git.oschina.net的私鑰公鑰
ssh-keygen -t rsa -C xxx@163.com -f ~/.ssh/id_rsa_github
把上面得到的文件拷貝到git默認訪問的.ssh目錄(默認就存在當前登錄用戶文件夾.ssh目錄)
如圖所示
把github對應的公鑰和oschina對應的公鑰上傳到服務器
在.ssh目錄創建config文本文件並完成相關配置(最核心的地方)
每個賬號單獨配置一個Host,每個Host要取一個別名,每個Host主要配置HostName和IdentityFile兩個屬性即可
Host的名字可以取為自己喜歡的名字,不過這個會影響git相關命令,例如:
Host mygithub 這樣定義的話,命令如下,即git@后面緊跟的名字改為mygithub
git clone git@mygithub:cary/sample.git
HostName 這個是真實的域名地址
IdentityFile 這里是id_rsa的地址
PreferredAuthentications 配置登錄時用什么權限認證--可設為publickey,password publickey,keyboard-interactive等
User 配置使用用戶名
** config文件配置如下:**
#gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_oschina
User cary
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User cary
打開Git Bash客戶端(管理員身份運行)執行測試命令測試是否配置成功(會自動在.ssh目錄生成known_hosts文件把私鑰配置進去)
**使用ssh -T 校驗
ssh -T git@gitee.com
如果成功會顯示如下:
Hi cary! You've successfully authenticated, but GITEE.COM does not provide shell access.