1. 程式人生 > 程式設計 >10分鐘教你本地配置多個git ssh連線的方法

10分鐘教你本地配置多個git ssh連線的方法

前言

你最近換電腦了嗎?還記得如何在本地配置多個 git ssh 連線嗎?一般公司用的是自己內網部署的 gitlab 伺服器進行程式碼管理,開發者使用的是公司的使用者名稱和公司的郵箱,而在個人的開源專案中,我們的程式碼託管於 github,這個時候就需要兩個或多個以上的 SSH-Key 去進行登入,方便程式碼的拉取與推送。

文章大綱

  • 檢視所有 ssh key
  • 分別配置 gitlab 內網 和 github 外網 ssh
  • 進行測試

第一步:檢視所有 SSH-Key

開啟 bash/zsh 終端:執行以下命令

$ cd ~/.ssh/
$ ls

輸出如下:

KaydeMBP:~ kayliang$ cd ~/.ssh/

KaydeMBP:.ssh kayliang$ ls
configgithub_id-rsa.pubgitlabnei_id-rsa.pub
github_id-rsagitlabnei_id-rsaknown_hosts

第二步:生成一個 ssh-key,用於配置公司的 GitLab

在~/.ssh/目錄會生成gitlab_id-rsa和gitlab_id-rsa.pub私鑰和公鑰。

$ ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/gitlabnei_id-rsa

檢視你的 public key,我們將gitlabnei_id-rsa.pub中的內容粘帖到公司GitLab伺服器的SSH-key的配置中。

# 把檔案內容列印到命令列工具上,方便複製
cat ~/.ssh/gitlab_id-rsa.pub

格式如下所示,記得把整個文字包括 ssh-rsa 也複製到剪下板上。

ssh - rsa;

xxxxxxxxx;
xxxxx;

然後貼上到網站的 ssh 配置中:

10分鐘教你本地配置多個git ssh連線的方法

第三步:Github 生成一個 SSH-Key

在~/.ssh/目錄會生成github_id-rsa和github_id-rsa.pub私鑰和公鑰。我們將github_id-rsa.pub中的內容粘帖到github伺服器的SSH-key的配置中。

ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/github_id-rsa

第四步:在 ~/.ssh 目錄下新增config配置檔案用於區分多個 SSH-Key

1. 新增識別 SSH keys 新的私鑰

預設只讀取 id_rsa,為了讓 SSH 識別新的私鑰,需要將新的私鑰加入到 SSH agent 中

# 檢視已經新增的私鑰
ssh-add -l

3072 SHA256:xxxxxxxxxx [email protected] (RSA)

$ ssh-agent bash
$ ssh-add ~/.ssh/github_id_rsa
$ ssh-add ~/.ssh/gitlabnei_id_rsa

這一步很重要,否則你在後面進行 git clone 拉取 ssh 地址的倉庫會出現錯誤。

KaydeMBP:chengdu-project kayliang$ git clone ssh://[email protected]:5337/xdata/SH2019GH109/chengdu-natural-resources-cli3.git
Cloning into 'chengdu-natural-resources-cli3'...
no such identity: gitlabnei_id-rsa: No such file or directory
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2. 新增 config 配置檔案

vi ~/.ssh/config

設定檔案內容如下,這裡要注意的是:配置的資訊必須跟你在倉庫介面的 ssh 的地址一致,因為有時候 http 地址跟 ssh 地址的埠是不一樣的。

10分鐘教你本地配置多個git ssh連線的方法

地址:ssh://[email protected]:5337/xdata/SH2019GH109/xxxxx.git

根據上面的地址可以進行配置如下:

# gitlab
 Host xxxxx.amazonaws.com.cn # 這裡是 ssh 地址的 ip
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/gitlabnei_id-rsa
 Port 5337 # 這裡是 ssh 地址的埠

# github
Host github.com
 HostName github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/github_id-rsa
 
# 更多配置 ...

配置檔案引數:

  • Host:可以看作是一個你要識別的模式,對識別的模式,進行配置對應的主機名和 ssh 檔案。
  • HostName: 要登入主機的主機名。
  • User: 登入名。
  • IdentityFile: 指明上面 User 對應的 identityFile 路徑。
  • Port: ssh 埠

第五步:測試

測試 github 外網 ssh 地址

ssh -T [email protected]

輸出:

Hi Jecyu! You've successfully authenticated,but GitHub does not provide shell access.

測試公司內網 ssh 地址

ssh -T [email protected]
Welcome to GitLab,@linjy!

就表示成功的連線公司的 gitlab。

最後

使用 git clone 分別獲取你的 github 個人專案,以及獲取 gitlab 的公司內網專案:

git clone ssh://xxxx.amazonaws.com.cn:5337/xdata/SH2020GH036/xxxx.git
cd my-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

因為個人專案和公司專案的賬戶和郵箱都不一樣,記得在各自的倉庫下進行配置,這樣提交時的 commit 記錄的使用者和郵箱都是正確的,當然這一步對你是否能用 ssh 提交和獲取不影響的,只是為了看 commit 記錄的時候更清晰。

 git config user.name xxxx
 git config user.email [email protected]

小結

本文是筆者在實踐中的記錄,也參考了一些網上優秀的作者經驗,如有錯誤請指出。
參考資料

更進一步閱讀,瞭解 SSH 知識:https://segmentfault.com/q/1010000000835302 和 《SSH,The Secure Shell》 書本。

git 手冊

到此這篇關於10分鐘教你本地配置多個git ssh連線的方法的文章就介紹到這了,更多相關git ssh連線內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!