2012-03-12 62 views
30

我需要在客戶端有多個密鑰才能訪問存儲庫託管中的兩個不同帳戶。請參閱https://redefy.repositoryhosting.com/support - >如何在客戶端上管理多個密鑰對的多個帳戶?在Windows上的Git中的多個ssh密鑰之間切換

我不明白如何在Windows上的Git中的不同SSH密鑰之間進行更改,任何人都可以幫助我嗎?

+0

你使用OpenSSH或那些的Plink爲遙控器的SSH連接定義兩個遙控器? – 2012-03-12 19:01:20

+0

你可以找到更多關於建立SSH [最好的方法一個客戶端上使用多個SSH私鑰(http://stackoverflow.com/questions/2419566/best-way-to-use-multiple-ssh-private-一鍵式客戶端) – peron 2012-05-06 07:52:29

回答

37

我假設你使用git bash和openssh。

就像它在文章中寫的一樣,您可以爲ssh客戶端創建一個配置文件,列出您的所有帳戶。你可以寫在自己的SSH客戶端配置文件下面的配置,~/.ssh/config

Host account-one 
HostName server.example.com 
User user-one 
IdentityFile ~/.ssh/key-one 

Host account-two 
HostName server.example.com 
User user-two 
IdentityFile ~/.ssh/key-two 

什麼它說的是你定義兩個,那種「主機別名」命名account-oneaccount-two。如果您使用它們,則在進行連接時,ssh客戶端將使用相應的HostNameUserIdentityFile作爲服務器地址,用戶名和ssh密鑰文件。有了這個,您可以使用它們在同一臺服務器上訪問您的帳戶和密鑰。

在Git中,你可以使用它們

$ git remote add one account-one:repository.git 
$ git remote add two account-two:repository.git 

那麼你就可以推到

$ git push one master 
$ git push two master 
+0

嗨,我將如何克隆使用此配置文件。 「$ git clone one repositoyr.git master」給出錯誤「太多參數」 – Tariq 2014-12-15 11:52:04

+0

不要忘記在主機名和存儲庫路徑之間添加冒號。你的情況這將是一個':repositoyr.git' – fajran 2014-12-16 08:29:24

+0

如文件規定這裏http://linux.die.net/man/5/ssh_config IdentityFile 指定要從用戶的RSA或DSA認證身份是讀取文件。 文件名可以使用波浪線語法是指一個用戶的主目錄或以下轉義字符中的一個:「%d」(本地用戶的主目錄),「%U」(本地用戶名),「%L」 (本地主機名),'%h'(遠程主機名)或'%r'(遠程用戶名)。例如IdentityFile%u/.ssh/id_rsa – 2015-07-03 10:07:25

0

我會間接回答這個問題。我以前使用過git bash,我發現當我通過git bash shell使用git時,它的行爲就像一個mac或linux bash shell。意思是,當使用git bash時,我可以回答你的問題,例如:

'如果你使用git bash,你可以像使用ssh-agent/ssh-添加和朋友'

2

在Windows上,您應該嘗試Pageant爲PuTTY,PSCP,PSFTP和Plink的SSH驗證代理。這個工具可以管理你的SSH密鑰及其通行短語。 要與Git一起使用,您必須安裝Putty並鏈接到設置GIT_SSH變量的plink.exe。

  1. 安裝膩子和朋友(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上)
  2. 集GIT_SSH

    set GIT_SSH=<path-to-plink.exe>

  3. 開始佳麗並添加鍵
  4. 運行git

心連心 Daniel

7

哪個鍵用於哪個服務器由git用來連接的SSH程序處理。在默認設置中,這應該是命令行SSH客戶端(openSSH?)。

使用OpenSSH可以在~/.ssh/config文件中配置對特定主機的特定密鑰文件:

Host foo.example.com 
    IdentityFile ~/.ssh/foo.example.com-id_rsa 

Host bar.example.com 
    IdentityFile ~/.ssh/bar.example.com-id_rsa 

~/.ssh/*.example.com-id_rsa是每個服務器私鑰文件。

我希望這會有所幫助。

+0

即使您在Windows上運行,路徑是否應該有正斜槓? – 2014-08-08 15:10:04

+0

所有這些路徑都是類似unix的,所以如果你在Windows上使用cygwin,它們將工作,如果你使用別的東西作爲你的shell,你需要調整它們。 – mamapitufo 2014-08-11 12:25:34

+0

謝謝!我剛剛看到你也可以使用某物。比如Windows上的「/C/Users/Benny/.ssh/id_rsa」。 – 2014-08-11 17:24:02