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

发布于 2024-12-10 13:41:14 字数 512 浏览 0 评论 0原文

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

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

我能找到的配置 Git 的大多数说明似乎都使用捆绑的 < code>ssh.exe 来管理证书,例如 GitHub 的 Windows 指南。有一种方法可以指定 Git 用于 SSL 的脚本(此处位于“不支持可用的身份验证方法”)通过环境变量,但是每个用户的身份验证方法对我来说不够精细。

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

In Mercurial, I can specify the command (and thus the certificate) used for SSH per-repository in .hg/hgrc, for example:

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

Most instructions I can find on configuring Git seem to use the bundled ssh.exe to manage the certificates, for example GitHub's guide for Windows. There is a way of specifying a script for Git to use for SSL (here under "No supported authentication methods available") via an environment variable, but that per user and not granular enough for me.

How can I specify a per-repository SSH command line in Git?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

找回味觉 2024-12-17 13:41:14

我不知道有什么方法可以让 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.

.insteadOf 之类的配置选项进行更强大的重写。

I'm unaware of a way to make git do this. But ssh should be flexible enough to do it instead.

First note that you can specify more than one identity file. It will try multiple identities in turn, until one is accepted.

Second, under unix, if you want only certain identities to be tried for certain hosts, you can do so by modifying ~/.ssh/config to have stanzas such as:

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

Though I don't know if that will work for your bundled windows ssh client, or where the config file goes, if it does.

EDIT: if you want to use two different identities on the same host, that can be done too:

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


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

and use and as the hosts in git (there is substantial support to treat one host as another, or do even stronger rewriting with config options such as url.<base>.insteadOf.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文