背景
在工作中,很有可能遇到這樣的情況:公司用gitlab搭建了一個倉庫,自己平常使用github來存儲自己的代碼。這樣就造成在只設置了公司的gitlab SSH的時候,clone自己github倉庫代碼時,只能使用HTTPS的方式clone,很不方便。所以這篇文章會教會你同時在一臺電腦上配置兩個SSH,以方便自己在工作和個人空間上的快速切換,提高效率。
正文
首先,要找到位於用戶下的.ssh文件,直接:
cd ~/.ssh
然後, 需要設置全局的name和email(這裏注意,哪個常用設置哪個,我是公司常用,就設置的公司的)
git config --global user.name 'xxx'
git config --global user.email '[email protected]'
接下來, 開始生成祕鑰文件. 這裏直接兩個都生成一下
ssh-keygen -t rsa -C '[email protected]' // GitLab
// Enter file in which to save the key (/Users/tomatoro/.ssh/id_rsa): id_rsa_gitlab
ssh-keygen -t rsa -C '[email protected]' // GitHub
// Enter file in which to save the key (/Users/tomatoro/.ssh/id_rsa): id_rsa_github
進入到.ssh文件下,找到id_rsa_gitlab.pub和id_rsa_github.pub 將裏面的內容全部複製粘貼到github 和 gitlab 的SSHKEY上
這裏名字隨便起, 然後記得.pub文件裏內容全部複製就好了. 完了之後點保存. gitlab同理.
接下來就要將兩個key在本地存儲起來
打開agent
ssh-agent -s
ssh-add ~/.ssh/id_rsa_github // 輸入生成祕鑰時設置的密碼
ssh-add ~/.ssh/id_rsa_gitlab // 輸入生成祕鑰時設置的密碼
然後需要一個config文件來管理這兩個key,以讓git知道分配給誰
在.ssh目錄下創建config文件
touch ~/.ssh/config
打開config編輯如下內容
Host github.com // 不動
HostName ssh.github.com // 不動
User [email protected] // 你自己的github郵箱
PreferredAuthentications publickey // 不動
IdentityFile ~/.ssh/id_rsa_github // 不動
Port 443
// 如果ssh -T [email protected]的時候報 ssh: connect to host github.com port 22: Operation timed out就把Port這條加上吧,這個坑坑了我好久!!
Host 192.168.0.231 // 你們公司gitlab的ip地址
HostName 192.168.0.231 //與Host保持一致
User [email protected] // 你gitlab的郵箱
IdentityFile ~/.ssh/id_rsa_gitlab // 不動
Port 64222 // 你們公司gitlab的ip端口
好了,到了這一步,設置就基本全部完成了,接下來只需要跟遠端的SSH同步一下就OK了
公司倉庫下
ssh -T [email protected]
輸入密碼
git clone ssh://[email protected]:64222/MLE/skillCenter.git
個人倉庫下
git init // --local需要在有git倉庫的情況下纔可以執行
git config —local user.name 'tomatoro'
git config —local user.email '[email protected]'
ssh -T [email protected]
輸入密碼
git clone ssh://[email protected]:443/Tomatoro/TypeScript-study.git
至此,就全部結束了. 想想我在搞這個東西的時候遇到的坑,現在都覺得好惡心. 整整弄了一下午, 希望對後來者有些許幫助吧.
全部原創,歡迎轉載!轉載請註明出處.謝謝!