10分鐘教你本地配置多個git ssh連接的方法
前言
你最近換電腦了嗎?還記得如何在本地配置多個 git ssh 連接嗎?一般公司用的是自己內(nèi)網(wǎng)部署的 gitlab 服務(wù)器進(jìn)行代碼管理,開發(fā)者使用的是公司的用戶名和公司的郵箱,而在個人的開源項(xiàng)目中,我們的代碼托管于 github,這個時候就需要兩個或多個以上的 SSH-Key 去進(jìn)行登錄,方便代碼的拉取與推送。
文章大綱
- 查看所有 ssh key
- 分別配置 gitlab 內(nèi)網(wǎng) 和 github 外網(wǎng) ssh
- 進(jìn)行測試
第一步:查看所有 SSH-Key
打開 bash/zsh 終端:執(zhí)行以下命令
$ cd ~/.ssh/ $ ls
輸出如下:
KaydeMBP:~ kayliang$ cd ~/.ssh/
KaydeMBP:.ssh kayliang$ ls
config github_id-rsa.pub gitlabnei_id-rsa.pub
github_id-rsa gitlabnei_id-rsa known_hosts
第二步:生成一個 ssh-key,用于配置公司的 GitLab
在~/.ssh/目錄會生成gitlab_id-rsa和gitlab_id-rsa.pub私鑰和公鑰。
$ ssh-keygen -t rsa -C "xxx@xxx.com" -f ~/.ssh/gitlabnei_id-rsa
查看你的 public key,我們將gitlabnei_id-rsa.pub中的內(nèi)容粘帖到公司GitLab服務(wù)器的SSH-key的配置中。
# 把文件內(nèi)容打印到命令行工具上,方便復(fù)制 cat ~/.ssh/gitlab_id-rsa.pub
格式如下所示,記得把整個文本包括 ssh-rsa 也復(fù)制到剪切板上。
ssh - rsa; xxxxxxxxx; xxxxx;
然后粘貼到網(wǎng)站的 ssh 配置中:
第三步:Github 生成一個 SSH-Key
在~/.ssh/目錄會生成github_id-rsa和github_id-rsa.pub私鑰和公鑰。我們將github_id-rsa.pub中的內(nèi)容粘帖到github服務(wù)器的SSH-key的配置中。
ssh-keygen -t rsa -C "xxxx@xxxx.com" -f ~/.ssh/github_id-rsa
第四步:在 ~/.ssh 目錄下添加config配置文件用于區(qū)分多個 SSH-Key
1. 添加識別 SSH keys 新的私鑰
默認(rèn)只讀取 id_rsa,為了讓 SSH 識別新的私鑰,需要將新的私鑰加入到 SSH agent 中
# 查看已經(jīng)添加的私鑰 ssh-add -l 3072 SHA256:xxxxxxxxxx linjy@xxxx.com.cn (RSA)
$ ssh-agent bash $ ssh-add ~/.ssh/github_id_rsa $ ssh-add ~/.ssh/gitlabnei_id_rsa
這一步很重要,否則你在后面進(jìn)行 git clone 拉取 ssh 地址的倉庫會出現(xiàn)錯誤。
KaydeMBP:chengdu-project kayliang$ git clone ssh://git@xxxxxxx.amazonaws.com.cn: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
git@xxxxxxx.amazonaws.com.cn: 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
設(shè)置文件內(nèi)容如下,這里要注意的是:配置的信息必須跟你在倉庫界面的 ssh 的地址一致,因?yàn)橛袝r候 http 地址跟 ssh 地址的端口是不一樣的。
地址:ssh://git@xxxxx.amazonaws.com.cn:5337/xdata/SH2019GH109/xxxxx.git
根據(jù)上面的地址可以進(jìn)行配置如下:
# 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 # 更多配置 ...
配置文件參數(shù):
- Host:可以看作是一個你要識別的模式,對識別的模式,進(jìn)行配置對應(yīng)的主機(jī)名和 ssh 文件。
- HostName: 要登錄主機(jī)的主機(jī)名。
- User: 登錄名。
- IdentityFile: 指明上面 User 對應(yīng)的 identityFile 路徑。
- Port: ssh 端口
第五步:測試
測試 github 外網(wǎng) ssh 地址
ssh -T git@github.com
輸出:
Hi Jecyu! You've successfully authenticated, but GitHub does not provide shell access.
測試公司內(nèi)網(wǎng) ssh 地址
ssh -T git@xxxx.amazonaws.com.cn Welcome to GitLab, @linjy!
就表示成功的連接公司的 gitlab。
最后
使用 git clone 分別獲取你的 github 個人項(xiàng)目,以及獲取 gitlab 的公司內(nèi)網(wǎng)項(xiàng)目:
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
因?yàn)閭€人項(xiàng)目和公司項(xiàng)目的賬戶和郵箱都不一樣,記得在各自的倉庫下進(jìn)行配置,這樣提交時的 commit 記錄的用戶和郵箱都是正確的,當(dāng)然這一步對你是否能用 ssh 提交和獲取不影響的,只是為了看 commit 記錄的時候更清晰。
git config user.name xxxx git config user.email xxxx@xxx.com
小結(jié)
本文是筆者在實(shí)踐中的記錄,也參考了一些網(wǎng)上優(yōu)秀的作者經(jīng)驗(yàn),如有錯誤請指出。
參考資料
更進(jìn)一步閱讀,了解 SSH 知識:https://segmentfault.com/q/1010000000835302 和 《SSH,The Secure Shell》 書本。
到此這篇關(guān)于10分鐘教你本地配置多個git ssh連接的方法的文章就介紹到這了,更多相關(guān)git ssh連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ImageMagick免費(fèi)開源圖片批處理利器使用詳解
這篇文章主要為大家介紹了ImageMagick免費(fèi)開源圖片批處理利器使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-0412個Visual Studio調(diào)試效率技巧(小結(jié))
這篇文章主要介紹了12個Visual Studio調(diào)試效率技巧,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-07-07網(wǎng)站程序員如何應(yīng)對web標(biāo)準(zhǔn)
網(wǎng)站程序員如何應(yīng)對web標(biāo)準(zhǔn)...2007-04-04vscode使用restClient實(shí)現(xiàn)各種http請求的操作方法
這篇文章主要介紹了vscode使用restClient實(shí)現(xiàn)各種http請求的操作方法,定義變量以及使用環(huán)境變量和返回?cái)?shù)據(jù)作為變量的操作代碼,感興趣的朋友跟隨小編一起看看吧2024-02-02minio對象存儲四臺服務(wù)器部署4個節(jié)點(diǎn)集群的實(shí)現(xiàn)方式
這篇文章主要介紹了minio對象存儲四臺服務(wù)器部署4個節(jié)點(diǎn)集群,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06