2014-10-07 53 views
1

我有兩個bitbucket帳戶和ssh密鑰要匹配。我見過manysolutionsmanage通過別名在同一主機上使用多個鍵,但不幸的是,我需要我的git引用是常見的。對同一主機使用多個ssh密鑰,而不使用別名

我需要它們的常見原因是我正在與Pods共享項目。這意味着對於所有開發項目的開發人員來說,遠程git源url必須是相同的,但我不能保證每個人都能夠設置與我相同的別名,並且他們不應該被期望。

我已經試過了愚蠢的企圖在指定,像這樣我的用戶帳戶:

Host BitbucketA 
HostName bitbucket.org 
IdentityFile ~/.ssh/id_rsa 
User UserA 

Host BitbucketB 
HostName bitbucket.org 
IdentityFile ~/.ssh/id_rsa_userB 
User UserB 

以爲我能指定使用id_rsa_userB每當我試圖訪問用戶B的庫之一。不幸的是,這似乎不是它的工作原理。

有什麼方法可以完成我想要的嗎?

回答

2

你真的接近了解決方案,這基本上是我所做的,它的工作。看到我的答案和下面的鏈接。

這裏是如何對我的Mac在同一臺服務器上的兩個帳戶設置我的SSH密鑰:

這只是必要的,如果你登錄到同一遠程Git回購兩個單獨的帳戶。

創建兩個SSH密鑰:

$ ssh-keygen -t rsa -f id_rsa_account1 
$ ssh-keygen -t rsa -f id_rsa_account2 

一下添加到~/.ssh/config

Host git_account1 
     User git 
     HostName git.xxxx.com 
     IdentityFile ~/.ssh/id_rsa_account1 
Host git_account2 
     User git 
     HostName git.xxxx.com 
     IdentityFile ~/.ssh/id_rsa_account2 

SSH平移Host名進入HostName前面加上User並選擇IdentityFile。這允許兩個或更多對具有不同ssl證書的相同URL進行回購。

另見Nerderati:~/.ssh/config & git

+1

但是OP特別聲明他們不想使用別名,因爲團隊中的每個人都必須在他們的盒子上具有相同的設置,也就是說,在repo URIs中使用'git_account1'。 – kostix 2014-10-07 16:51:08

+0

所以你不同意最後一句話:「ssh將」主機「名稱翻譯爲」HostName「,並在前面添加」User「並選擇ssh」IdentityFile「。允許對具有不同ssl證書的相同URL進行兩次或多次重複使用。 「或者我錯過了什麼? – zaph 2014-10-07 17:53:31

+0

不,我當然同意。但是當我讀到最初的問題時,問題的關鍵在於詢問URI中沒有*不同主機*(別名與否),因爲這需要團隊中的每個人都具有相同的SSH設置。我的答案的問題是,它也需要設置開發人員的箱子。不幸的是,我認爲這個問題沒有任何漂亮的解決方案。 – kostix 2014-10-08 10:20:57

0

你可以訴諸使用一對shell腳本和環境變量:

$ cat >~/bin/ssh-acct-one 
#!/bin/sh 
exec /usr/bin/ssh -i ~/.ssh/id_rsa_account1 [email protected] 
^D 
$ chmod +x $_ 
$ GIT_SSH=ssh-acct-one git clone ssh://[email protected]/... 

…與同爲第二個身份文件。 (最後一行的電話假設您的$PATH上有~/bin)。

造成這種笨拙的原因是,Git直接將$GIT_SSH傳遞給exec()而不是/bin/sh -c等,因此不執行使用外殼擴展。

調試時,您還可以使用GIT_TRACE=1使Git的告訴你正在執行什麼,並修改腳本passng -vvvssh,使該報告什麼正在做(包括哪些鍵(身份文件),它的使用)。

相關問題