我目前正尝试访问 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 环境变量。