从EC2实例克隆git仓库遇到问题

6

我尝试将一个裸的git仓库放到运行在亚马逊EC2上的Ubuntu服务器上,但我遇到了麻烦,即无法让git从我的本地pc克隆该仓库。

当我尝试以下命令时:

git clone git@ec2-blah.compute-1.amazonaws.com:/opt/git/project.git

I get:

Cloning into project...
Unable to open connection:
Host does not existfatal: The remote end hung up unexpectedly

然而,我没有任何困难地ssh到同一台服务器。例如,以下内容可以正常工作:

ssh git@ec2-blah.compute-1.amazonaws.com

我认为如果这样做可以正常工作,那么我的客户端和服务器上的密钥设置就是正确的。因此git clone命令也应该可以正常工作。

但事实并非如此。

我进行了研究并尝试了许多变化,但我只是觉得可能漏掉了一些非常简单的东西。

5个回答

8

请检查git是否执行了您预期的操作,然后尝试使用与git联系远程服务器所使用的确切命令。

运行GIT_TRACE=1 git clone git@ec2-blah.compute-1.amazonaws.com:/opt/git/project.git

Git会告诉您它正在运行的命令,例如

trace: run_command: 'ssh' 'git@ec2-blah.compute-1.amazonaws.com' 'git-upload-pack '\''/opt/git/project.git'\'''

您可以尝试运行该命令以消除Git的影响:

ssh git@ec2-blah.compute-1.amazonaws.com git-upload-pack '/opt/git/project.git'

虽然你报告的错误信息看起来不太可能,但是通过strace命令可以提供一些提示:

strace -o/tmp/tr -s128 -f ssh git@ec2-blah.compute-1.amazonaws.com git-upload-pack '/opt/git/project.git'

如果仍然存在问题,请回报上面显示的调试信息。

感谢您的调试帮助。它给了我一些想法。我无法解释为什么,但将我的msysgit 1.7.3.1预览版升级到1.7.4预览版似乎解决了问题。我希望有比这更清晰的解决方法,但就是这样。 - Rydell

2

有趣。我曾经遇到过类似的问题,尝试从外部GIT源克隆到EC2主机。使用上述方法解决了我的问题。

之前一直出现以下错误:

[ec2-user@*.*.*. mediagoblin]$ sudo git clone git://gitorious.org/mediagoblin/mediagoblin.git
Cloning into mediagoblin...
gitorious.org[0: 87.238.52.168]: errno=Connection timed out
gitorious.org[0: 2a02:c0:1014::1]: errno=Network is unreachable
fatal: unable to connect a socket (Network is unreachable)

我尝试将git://替换为ssh://,结果如下:

sudo git clone ssh://gitorious.org/mediagoblin/mediagoblin.git
Cloning into mediagoblin...
The authenticity of host 'gitorious.org (87.238.52.168)' can't be established.
RSA key fingerprint is *:*:*:*:*:**:.  
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitorious.org,87.238.52.168' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

然后我运行了原始的git://请求,它可以工作。

希望这有所帮助。


0

Git使用端口9418。您的实例上是否开放了此端口?


1
真的吗?我以为git是通过SSH协议(端口22)工作的,这就是我尝试做的。我已经打开了端口80和22。我没有使用git服务器(如gitosis)。 - Rydell
1
仅支持 git 协议 / git daemon 端口 9418。 - manojlds

0

尝试在远程地址前添加ssh://。我从来没有成功地让git在没有它的情况下一直正常工作。

git clone ssh://git@ec2-blah.compute-1.amazonaws.com/opt/git/project.git


0

该 git 帐户可能没有对该存储库/分支的读取/写入访问权限。


在尝试您的建议的过程中。但是克隆需要更多的访问权限吗? - Rydell

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