背景
當一台工作電腦需要通過SSH-Key方式登錄多個git賬號時,比如:
a. 一個mygit,用於公司內部比較隱私的工作開發;
b. 一個gitee,用於公司內部普通的工作開發;
c. 一個github,用於自己進行一些公開的分享的開發活動;
Git服務器部署在Linux服務器上。
解決方法
1. 生成一個公司用的mygit的SSH-Key
$ ssh-keygen -t rsa -C 'xxxx@company.com' -f ~/.ssh/mygit_id_rsa
2. 生成一個公司用的gitee的SSH-Key
$ ssh-keygen -t rsa -C 'xxxx@company.com' -f ~/.ssh/gitee_id_rsa
3. 生成一個github用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxx@qq.com' -f ~/.ssh/github_id_rsa
4. 在用戶目錄 ~/.ssh 目錄下新建一個名為config的文件,添加如下內容
# mygit Host 192.168.80.129 PreferredAuthentications publickey IdentityFile ~/.ssh/mygit_id_rsa # gitee,Host值為域名或者ip(必填);HostName值為域名或者ip(非必須);User值可任意(非必須) Host gitee.com HostName gitee.com User gitee PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
5. 把.pub文件中的公鑰字符串復制到對應平台(公鑰文件.pub 可以刪掉)。
對於公司內部搭建的git服務器,則復制到用戶目錄 ~/.ssh/authorized_keys 文件中(該文件如果沒有,則需要手動創建)
6. 用ssh命令分別測試
$ ssh -T git@192.168.80.129
$ ssh -T git@gitee.com
$ ssh -T git@github.com
這里以gitee為例,成功的話會返回下圖所示
ssh-keygen命令介紹:
格式:ssh-keygen -t rsa -C root@localhost -f ~/.ssh/id_rsa -P <密碼>
-t:指定生成密鑰類型(rsa、dsa)。默認為rsa
-f:指定存放私鑰的文件名,默認為id_rsa。公鑰文件名默認為私鑰文件名加.pub后綴。~:代表用戶目錄。
-P:指定passphrase(私鑰的加密密碼),用於確保私鑰的安全。默認為空。
-C:備注(非必須,可任意寫)。默認為user@hostname。建議填寫郵箱地址:youremail@example.com
PS:1. 密鑰對是特殊的密碼對,用於linux用戶登錄時的鑒權。
私鑰(比較隱私)放在本地,公鑰字符串則手動復制到公司的linux服務器的用戶目錄 ~/.ssh/authorized_keys 文件中(需要手動創建)
登錄時就基於某用戶名和密鑰指紋進行私鑰公鑰的成對匹配,匹配通過則允許登錄。
2.一般情況下,本地客戶端可以使用同一個密鑰(私鑰),同時登陸gitee網站(僅限一個用戶)、github網站(僅限一個用戶)、公司git服務器(一個git用戶)。