關於git專案中多ssh-key管理

janto007發表於2018-03-12

前言

git專案進行pull,push等操作時,都需要本地ssh-key許可權。但當多個倉庫或多個賬號進行開發時,則需要對多個key進行管理。 環境: windows10, Git Bash。

生成ssh-key

1、生成一個新的自定義名稱(demo)的公鑰:

$ ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/demo
複製程式碼

執行命令後,一路回車;
執行完成後,會在 ~/.ssh/目錄下生成一個 demo 和 demo.pub(主要內容在此檔案中) 檔案;
然後可同樣步驟再生成另一個公鑰(anohterDemo)。

2、新增相應的 demo.pub,anotherDemo.pub 到你的git專案上。

公鑰新增代理

1、檢視系統ssh-key代理,為公鑰新增代理,執行如下命令

$ ssh-add -l
複製程式碼

以上命令若輸出 "Could not open a connection to your authentication agent" 則還沒有建立代理。可以先執行以下命令建立代理

$ eval `ssh-agent -s`
複製程式碼

如輸出 "The agent has no identities" 則表示沒有代理。如果系統有代理,可以執行下面的命令清除代理:

$ ssh-add -D
複製程式碼

2、然後依次將不同的ssh新增代理,執行命令如下:

 $ ssh-add ~/.ssh/demo
 $ ssh-add ~/.ssh/anotherDemo
複製程式碼

配置公鑰對應伺服器

1、配置 ~/.ssh/config 檔案 如果沒有就在~/.ssh目錄建立config檔案,該檔案用於配置對應的伺服器。

#demo resrepositories 
Host github-demo
HostName github.com
User git
IdentityFile C:/Users/使用者名稱/.ssh/demo

#anotherDemo resrepositories 
Host github-anotherDemo
HostName github.com
User git
IdentityFile C:/Users/使用者名稱/.ssh/anotherDemo
複製程式碼

配置完成後,在連線github倉庫時,遠端庫的地址要對應地做一些修改,比如現在新增帳號下的demo倉庫,則需要這樣新增:

git remote add test git@github-demo:username/demo.git
#並非原來的git@github.com:username/demo.git
複製程式碼

2、測試 ssh

$ ssh -T git@github.com
複製程式碼

你會得到如下提示,表示這個ssh公鑰已經獲得了許可權

Hi @username/demo! You've successfully authenticated, but GitHub does not provide shell access.
複製程式碼

Ps: 同理可得多賬號操作方式

相關文章