使用SSH主机别名进行git克隆

5
我目前需要完成以下任务:我们的CI服务器需要使用不同的SSH(Deploy/Checkout)密钥访问GitHub上的第二个仓库,而不是主项目仓库(GitHub deploy密钥仅适用于单个仓库。两个仓库=>相同主机的两个SSH密钥。因此使用别名的想法)。然而,我们目前遇到了一些问题,我相信我只是缺少了一些细节。
假设我们的git仓库URL如下:
git@gitub.com:myorg/somerepo.git

我们将其更改为:
git@gitub-second-account:myorg/somerepo.git

然后我调整了我的.ssh/config文件,使用引入的主机别名github-second-account并将其映射回github.com

# Default GitHub user
Host github.com
 HostName github.com
 AddKeysToAgent yes
 IdentityFile ~/.ssh/id_rsa

# Second account alias
Host gitub-second-account
 HostName github.com
 IdentityFile ~/.ssh/second_id_rsa

我测试了我的设置并运行了以下命令:
ssh -T git@github-second-account

GitHub 表示一切正常,身份验证成功。太好了。(通过 -vvv 验证了使用的正确 SSH 密钥。)但现在我要继续执行以下操作:

git clone git@gitub-second-account:myorg/somerepo.git

并且会收到一个错误:

ssh: Could not resolve hostname gitub-second-account: nodename nor servname provided, or not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

是的,有一个关于访问权限的警告。我已经仔细检查了分配的SSH密钥是否具有权限(通过在github.com上进行检查并更改我的.ssh/config以使用该SSH密钥),并且仓库可以顺利检出。我有一种烦人的感觉,即git无法解析主机名别名。

有什么想法吗?运行git clone --progress --verbose ...不幸的是没有提供更多信息。


主机需要改为 github-second-account:myorg 吗? - evolutionxbox
如果SSH密钥有效,则它会告诉我存储库不在您认为的位置。 - evolutionxbox
你解决了吗?我也遇到了主机名的同样问题。ssh -T 报告说我对 bitbucket 仓库有读取权限。我正在直接使用我的仓库克隆 URL,所以我知道它是正确的。我正在按照 Atlassian 的指南操作:https://developer.atlassian.com/blog/2016/04/different-ssh-keys-multiple-bitbucket-accounts/ - BugHunterUK
打字错误...你在github中漏掉了h。 - MoVod
1个回答

0

请确保您的SSH-Agent中有正确的身份标识。虽然它可能已在您的配置文件中指定,但我发现如果我运行以下命令:

ssh-add -D

然后...

ssh-add ~/.ssh/theoneiwant

这解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接