github使用ssh與客戶端連線。如果是單使用者(first),生成金鑰對後,將公鑰儲存至github, 每次連線時ssh客戶端傳送本地私鑰(預設~/.ssh/id_rsa)到服務端驗證。 單使用者情況下,連線的伺服器上儲存的公鑰和傳送的私鑰自然是配對的。
但是如果是多使用者(first,second),我們在連線到second的帳號時, second儲存的是自己的公鑰,但是ssh客戶端依然傳送預設私鑰,即first的私鑰, 那麼這個驗證自然無法通過。 不過,要實現多帳號下的ssh key切換在客戶端做一些配置即可。
首先cd到~/.ssh 使用ssh-keygen -t -rsa -c 'second@mail.com'
生成新的ssh key:id_rsa_second,生成完後將新的ssh public key新增到github。
ssh-keygen -t -rsa -c 'second@mail.com'
預設ssh只會讀取id_rsa,所以為了讓ssh識別新的私鑰,需要將其新增到ssh agent
ssh-add ~/.ssh/id_rsa_second
該命令如果報錯:could not open a connection to your authentication agent.
無法連線到ssh agent,可執行ssh-agent bash
命令後再執行ssh-add
命令。
完成以上步驟後在~/.ssh目錄建立config檔案,該檔案用於配置私鑰對應的伺服器。內容如下:
配置完成後,在連線非預設帳號的github倉庫時,遠端庫的位址要對應地做一些修改, 比如現在新增second帳號下的乙個倉庫test,則需要這樣新增:# default github user(first@mail.com)
host github.com
hostname github.com
user git
identityfile c:/users/username/.ssh/id_rsa
# second user(second@mail.com)
host github-second
hostname github.com
user git
identityfile c:/users/username/.ssh/id_rsa_second
這樣每次連線都會使用id_rsa_second與伺服器進行連線。至此,大功告成!git remote add test git@github-second:second/test.git
#並非原來的git@github.com:second/test.git
注意:github根據配置檔案的user.email來獲取github帳號顯示author資訊, 所以對於多帳號使用者一定要記得將user.email改為相應的email(second@mail.com)。
在git bash 中輸入以下**
$ ssh -t git@github.com
當你輸入以上**時,會有一段警告**,如:
the authenticity of host 'github.com (207.97.227.239)
' can'
t be established.
# rsa key fingerprint is
16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
.# are you sure you want to
continue connecting (yes/no)?
這是正常的,你輸入 yes 回車既可。如果你建立 ssh key 的時候設定了密碼,接下來就會提示你輸入密碼,如:
enter passphrase for key '/c/users/administrator/.ssh/id_rsa
':
當然如果你密碼輸錯了,會再要求你輸入,知道對了為止。
注意:輸入密碼時如果輸錯乙個字就會不正確,使用刪除鍵是無法更正的。
密碼正確後你會看到下面這段話,如:
hi username! you've successfully authenticated, but github does not
# provide shell access.
如果使用者名稱是正確的,你已經成功設定ssh金鑰。如果你看到 「access denied」 ,者表示拒絕訪問,那麼你就需要使用 https 去訪問,而不是 ssh 。
參考github幫助文件:
如何在本機配置多個github的sshkey
當我們想要在一台機器上開發多個不同的github專案時,我們就需要配置多個不同的公鑰。github站點限制了乙個ssh公鑰只能在乙個倉庫用一次,不然就會提示key is already in use。當我們在本機使用多個ssh公鑰時,又該如何管理呢?本文以我的乙個專案在ubuntu18.04上的操作...
多個github帳號的SSH key切換
1.首先cd到 ssh 使用 ssh keygen t rsa c second mail.com 生成新的ssh key id rsa second ssh keygen t rsa c second mail.com 2.預設ssh只會讀取id rsa,所以為了讓ssh識別新的私鑰,需要將其新增...
github gitlab 管理多個ssh key
以前只使用乙個 ssh key 在github上提交 由於工作原因,需要再新增乙個ssh key在公司的 gitlab上提交 下面記錄下配置過程,防止遺忘。說明下我的環境是 win7 msysgit gitbash,相信 nux bash 也是同樣的道理。第一次使用ssh生成key,缺省會在使用者 ...