平時自己會用到github來管理自己的一些專案,同時公司也在用gitlab做版本管理,那麼如何在一臺電腦上同時連線gitlab和github呢?下面展示一下配置的步驟
1. 分別生成gitlab和github的ssh key
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
複製程式碼
生成第一個gitlab的ssh key一路回車即可,生成第二個github的ssh key需注意一下ssh key的名字需要修改一下,否則就會覆蓋前面生成的gitlab的key,這裡我修改成id_rsa_github
這時候可以看到~/.ssh/目錄下生成了以下檔案- id_rsa
- id_rsa.pub
- id_rsa_github
- id_rsa_github.pub
複製程式碼
2. 分別複製公鑰中的內容,在gitlab和github中新增ssh key
cat ~/.ssh/id_rsa.pub
複製程式碼
3. 新增config檔案
在.ssh/目錄下新建一個config檔案
vim config
複製程式碼
新增配置,內容為
# gitlab
Host gitlab
User git
HostName gitlab.cheanjiait.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# github
Host github
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
複製程式碼
4.測試連線
$ ssh -T gitlab
Welcome to GitLab, Ethan Chen!
複製程式碼
$ ssh -T github
Hi azumia! You've successfully authenticated, but GitHub does not provide shell access.
複製程式碼
如果出現以上內容,則代表連線已經成功了,接下來就可以愉快的搞git了
注意事項
在使用github時,在專案下初始化git的時候記得定義好user.name和user.email
git config --local user.name 'aaa'
git config --local user.email 'aaa@qq.com'
複製程式碼
如果測試連線失敗,Permission denied (publickey).原因是們自定義了 id_rsa_github 鑰匙名,預設情況下,連線會搜尋 id_rsa 鑰匙名,所以這裡會失敗
可以通過以下操作了解連線失敗的具體原因
ssh -T -v git@github.com
複製程式碼
針對這個問題的解決方案如下
開啟ssh-agent
# 開啟 agent
eval $(ssh-agent -s) ←┘
Agent pid 8428
複製程式碼
# 新增 鑰匙名
ssh-add ~/.ssh/id_rsa_github ←┘
Identity added: /c/Users/user/.ssh/id_rsa_github (/c/Users/user/.ssh/id_rsa_github)
複製程式碼
# 檢視 agent list
ssh-add -l ←┘
8428 SHA256:A9UcJMadwTpF7TvsT5LEXsSssTs5qehmV9Q2Q8Ntw3o /c/Users/user/.ssh/id_rsa_github (RSA)
複製程式碼
# 不用時可以關閉 agent
eval $(ssh-agent -k) ←┘
Agent pid 8428 killed
複製程式碼
如果初始化倉庫的時候報以下錯誤
ssh: Could not resolve hostname https: nodename nor servname provided, or not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
複製程式碼
則檢視一下自己的git的配置
$ git remote -v
複製程式碼
將git地址由ssh方式改為https方式即可
參考文件: 同時使用:gitlab & github