如何撤消转发身份上的 ssh-add 以访问 github?

如何撤消转发身份上的 ssh-add 以访问 github?

我目前正尝试访问 GitHub 以使用 SSH 克隆存储库。

但是,当我输入要克隆的url时,服务器在之后挂起了Initialized empty Git repository in /export/home/nathan/myrepo,如下所示:

$ git clone [email protected]:v6/myrepo.git
Initialized empty Git repository in /export/home/nathan/myrepo/.git/

ssh-add -l展现多重身份。

2048 <fingerprint> /home/vagrant/.ssh/id_rsa (RSA)
2048 <fingerprint> production-infrastructure.pem (RSA)

我已将上述两个的公钥添加到我的 GitHub 帐户。

然而,当我尝试时,我得到了如下的结果:ssh -T [email protected]

Hi otheruser1998! You've successfully authenticated, but GitHub does not provide shell access.

我不是otheruser1998

我认为 GitHub 可能将该production-infrastructure.pem密钥与关联otheruser1998,其帐户已经拥有该密钥。

我如何禁用该production-infrastructure.pem密钥ssh-agent

如果这不起作用,我可以指定一个密钥供 git 使用吗?

由于这两个密钥都是从我的本地开发机器转发的,因此我无法直接在中指定我的密钥文件~/.ssh/config,这是对如何告诉 git 使用哪个私钥?建议。

我也不能用它ssh-add -d production-infrastructure.pem来删除密钥,因为它再次要求指定密钥文件的本地路径:http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/ssh-add.1

问题标题看起来有点笨拙。请修改。我会尽我所能让它更清晰。然而,最终目标是结束让我遇到那个沉默git clone错误的情况,克隆我的存储库,然后继续生活。

答案1

您可以终止 ssh-agent,但这会阻止您在完成后重新加载 production-infrastructure.pem(因为您似乎没有本地可用的)。

另外,您可以使用 $GIT_SSH 环境变量来指定 git 应该用于 ssh 的程序。您需要创建一个包含以下两行内容的新 shell 脚本:

#!/bin/bash
ssh -i /home/vagrant/.ssh/id_rsa $*

我会将其保存为 ~/bin/githubssh 并使用模式 555。(不幸的是,这是必要的,因为 git 不会在 GIT_SSH 环境变量中执行参数解析,它会在执行 SSH 程序时尝试将整个内容填充到 argv[0] 中。)

然后,结账的时候:

$ GIT_SSH=~/bin/githubssh git clone [email protected]:v6/myrepo.git

这将仅为该 git 命令设置 GIT_SSH 环境变量。

相关内容