【學了就忘】GitHub — 71.Git配置多個用戶的SSH-Key

1、爲什麼要配置多個SSHKey

因爲有的時候會出現這樣的Git使用場景,就比如我們在公司裏面,會有一個公司的GitHub地址。然後我們自己平時練習寫一些代碼,會存到自己的Github上。而且現在很多公司用的是Gitlab,(實際上Github和Gitlab命令、操作等都是一模一樣的,然後配置的方法他們也是一樣的),Gitlab也會有一個地址。這樣簡短的一段描述,就會配置三個SSHKey賬戶。

所以在我們開發過程中,可能會遇到使用同一臺機器,既要向公司Git服務器提交代碼,也要向Github或者Gitlab等提交代碼。向不同的倉庫中提交代碼,所需要的用戶名信息也是不一樣的,此時就需要配置多個SSH Key管理多個用戶。

2、配置多個sshkey

步驟1:生成SSHkey

生成一個公司用的SSH-Key密鑰

$ ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/company_id_rsa

生成一個Github用的SSH-Key密鑰

$ ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/github_id_rsa

此時,~/.ssh目錄下應該有4個文件:company_id_rsa文件和company_id_rsa文件,還有github_id_rsa文件和github_id_rsa.pub文件。

注意::密鑰文件的名稱不要和之前定義的密鑰文件名稱衝突,不過最好還是起一個比較有意義的名字。

步驟2:將的公鑰配置到GitHub官網上

詳細步驟請看前面文章。

步驟3:在~/.ssh目錄下創建一個config文件

.ssh目錄創建一個config文本文件,並完成相關配置。

每個賬號單獨配置一個Host,每個Host要取一個別名,每個Host主要配置HostNameIdentityFile兩個屬性即可。

常用編輯配置說明:

  • Host:定義Host的名字,可以任取自己喜歡的名字,不過這個會影響Git相關命令。
    例如:Host mygithub 這樣定義的話,即git@後面緊跟的名字改爲mygithub
    命令如下:git clone git@mygithub:PopFisher/AndroidRotateAnim.git
    一般都會和HostName屬性其一樣的名字。
  • HostName:這個是真實的域名地址,要登錄主機的主機名。(建議與Host一致)
  • IdentityFile:指定私鑰文件的路徑,也就是id_rsa文件的絕對路徑。
  • User:配置登錄名,例如:GitHub的username。
  • Port:端口號(如果不是默認22端口,則需要指定端口號)
  • PreferredAuthentications:配置登錄時用什麼權限認證,可設爲publickey,password publickey,keyboard-interactive等

示例:

# 1.個人git
  Host github.com(github基本固定寫法)
  HostName github.com(github基本固定寫法)
  User ****
  IdentityFile /Users/LLL/.ssh/github_id_rsa
  PreferredAuthentications publickey

# 2.公司git
  Host github.com(寫入公司的git地址)
  HostName github.com(寫入公司的git地址)
  User ****(公司的用戶名)
  IdentityFile /Users/LLL/.ssh/company_id_rsa(公司密鑰)
  PreferredAuthentications publickey
  
# 3.gitee and github
# 注意:多個Host公用一個公鑰時,
# 對應的HostName和Port必須跟在Host後面
  Host gitee.com
  HostName gitee.com
  Host github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

步驟4:測試SSHKey否配置成功

使用ssh -T命令校驗,以GitHub爲例:

ssh -T [email protected]

如果成功會顯示如下:
Hi cary! You've successfully authenticated, but GitHub does not provide shell access.:您已經成功通過身份驗證。

提示:如果是雲碼,則執行$ ssh -T [email protected]命令。

多個賬戶分別驗證通過即可。

說明多賬戶SSHKey配置成功。

如果測試沒有成功的話,教你解決問題的終極辦法。

比如測試GitHub遠程倉庫:

ssh -vT [email protected]

-v參數是輸出編譯信息,然後根據編譯信息自己去解決問題吧。(一般來說,都是config文件中的host那塊寫錯了)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章