2012-03-12 91 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