为Git per-repository指定SSH配置

时间:2011-10-19 05:11:03

标签: git mercurial ssh

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

[ui]
...
ssh = "C:\path\to\ssh.exe" -i "C:\Development\Identities\identity1.id_rsa"

我在配置Git时可以找到的大多数说明似乎都使用捆绑的ssh.exe来管理证书,例如GitHub's guide for Windows。有一种方法可以通过环境变量为Git指定用于SSL的脚本(here在“没有可用的支持的身份验证方法”下),但对于每个用户而言并不够精细。<​​/ p>

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

1 个答案:

答案 0 :(得分:3)

我不知道如何让git这样做。但是ssh应该足够灵活,可以做到这一点。

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

其次,在unix下,如果您只想为某些主机尝试某些身份,则可以通过修改~/.ssh/config来实现此目的,例如:

Host <hostname>
     IdentitiesOnly yes
     IdentityFile "C:\Development\Identities\identity1.id_rsa"

虽然我不知道这对你的捆绑式Windows ssh客户端是否有效,或者配置文件的用途是否适用。如果有的话。

编辑:如果你想在同一台主机上使用两个不同的身份,也可以这样做:

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


Host <alias2>
     HostName <realhostname>
     IdentiesOnly yes
     IdentityFile identity2

并使用和作为git中的主机(有大量支持将一个主机视为另一个主机,或使用url.<base>.insteadOf等配置选项进行更强大的重写。