为每个存储库的Git指定SSH配置

为每个存储库的Git指定SSH配置,git,mercurial,ssh,Git,Mercurial,Ssh,在Mercurial中,我可以在.hg/hgrc中指定每个存储库用于SSH的命令(以及证书),例如: [ui] ... ssh = "C:\path\to\ssh.exe" -i "C:\Development\Identities\identity1.id_rsa" 例如,我能找到的关于配置Git的大多数说明似乎都使用捆绑的ssh.exe来管理证书。有一种方法可以通过环境变量为Git指定用于SSL的脚本(在“无支持的身份验证方法可用”下),但这是针对每个用户的,对我来说不够精细 如何在Git

在Mercurial中,我可以在
.hg/hgrc
中指定每个存储库用于SSH的命令(以及证书),例如:

[ui]
...
ssh = "C:\path\to\ssh.exe" -i "C:\Development\Identities\identity1.id_rsa"
例如,我能找到的关于配置Git的大多数说明似乎都使用捆绑的
ssh.exe
来管理证书。有一种方法可以通过环境变量为Git指定用于SSL的脚本(在“无支持的身份验证方法可用”下),但这是针对每个用户的,对我来说不够精细


如何在Git中指定每个存储库的SSH命令行?

我不知道如何让Git执行此操作。但是
ssh
应该有足够的灵活性来代替它

首先请注意,您可以指定多个标识文件。它将依次尝试多个身份,直到其中一个被接受

第二,在unix下,如果您只想为某些主机尝试某些标识,可以通过修改
~/.ssh/config
来实现这一点,使其具有如下节:

Host <hostname>
     IdentitiesOnly yes
     IdentityFile "C:\Development\Identities\identity1.id_rsa"
主机
唯一相同的是
IdentityFile“C:\Development\Identifications\identity1.id\u rsa”
尽管我不知道这是否适用于捆绑的windows ssh客户端,或者配置文件在哪里,如果适用的话

编辑:如果要在同一主机上使用两个不同的标识,也可以这样做:

Host <alias1>
     HostName <realhostname>
     IdentiesOnly yes
     IdentityFile identity1


Host <alias2>
     HostName <realhostname>
     IdentiesOnly yes
     IdentityFile identity2
主机
主机名
只有是
标识文件标识1
主办
主机名
只有是
标识文件标识2

并将和用作
git
(有大量的支持将一台主机视为另一台主机,或者使用配置选项(如
url.)进行更强大的重写。

谢谢,虽然这不是我所希望的,但效果很好。我也遇到了多个Git安装的问题,我最终卸载了除Cygwin之外的所有主机,Cygwin的情况非常正常。)d使用
c:\cygwin\home\[USERNAME]\.ssh\config