如何對不同的帳戶和主機使用多個 ssh 金鑰

如何對不同的帳戶和主機使用多個 ssh 金鑰

我有多個 ssh 金鑰,並且在 bitbucket 和 github 上也有帳戶。當我使用 pull 時,它如何給我錯誤

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

或者如果我透過 ssh 連接 bitbucket 網站,則會出現錯誤,公鑰被拒絕

:~$ ssh [email protected]
Permission denied (publickey).

我怎麼能解決這個問題並對不同的帳戶使用不同的金鑰。

答案1

這些都是從網站和 stackoverflow 收集的,希望這對 ssh 新手有所幫助

所以你可以有很多 ssh 金鑰

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

注意:我們需要將 then 添加到 ssh-agent 中,可能會添加 id_rsa 所以我們需要添加其他私鑰

~/.ssh$ ssh-add yyy_id_rsa

現在我們已將兩個 ssh 金鑰新增至 ssh-agent

我們有一個用於 bitbucket,一個用於 github

所以我們創建一個像這樣的配置文件

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

注意:我在 bitbucket 上的 2 個不同帳號使用 2 個不同的金鑰,在 github 上使用一個金鑰。

現在我們需要告訴 git 儲存庫使用哪個主機,以便我可以取得該特定帳戶的特定 ssh 金鑰

[email protected]/yyyproject.git改成git@bit-yyyuser:yyyuser/yyyproject.git

所以在專案資料夾中加入遠端url

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

在其他項目中

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

現在您可以輕鬆使用推和拉

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

和另一個項目

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

現在我本地機器上沒有github項目,所以我們需要克隆該項目,但是我們需要對克隆的url進行一些更改

我們的網址是這樣的

[email protected]:xxxuser/python.git

因為我們必須使用特定的密鑰來克隆它,所以我們只需要使用我們定義的主機來更改主機名

git@git-xxxuser:xxxuser/python.git

依照設定檔中的定義

現在我們可以克隆

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

我們已經為不同的主機確定了不同的 ssh 密鑰,一個用於 git,一個用於 bitbucket,現在系統知道哪個 ssh 密鑰用於哪個主機。

現在我們可以輕鬆地拉、推。

答案2

~/.ssh/config這樣配置:

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

然後在 git url 中使用自訂主機名稱而不是真實域:

git remote add thuc git@gitlab-as-thuc:your-repo.git  

欲了解更多詳細信息,請閱讀此處:http://itblog.study.land/how-to-specify- Different-ssh-keys-for-git-push-for-a-given-domain/

相關內容