连接到EC2后无法执行git clone命令。

3

我已经通过ssh登录到一个新的EC2实例,这是为我们的生产环境进行设置的。我尝试从另一个EC2实例(作为我们的开发机器)上克隆一个项目,但我收到了以下错误消息:

git clone
$ git clone ubuntu@?.??.??.??6:/var/git/our-project.git our-project
Cloning into 'our-project'...
ssh: connect to host ?.??.??.??6 port 22: Connection timed out
fatal: Could not read from remote repository.

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

我已经在生产环境中创建了公钥/私钥对,以连接到开发环境中,并将公钥添加到dev box的authorized_keys。这与我在本地机器上使用的设置相同,可以正常工作。

我还为dev box配置了AWS安全组,其中将生产ec2的公共IP添加到其中,以允许端口22上的ssh入站连接。

问题可能是,我无法从一个机器中进行其他ssh,而这实际上是git clone命令所做的。我还尝试了此答案建议的方法从本地机器运行git clone命令,但是,如您所见,这给我带来了相同的错误消息。

ssh ubuntu@5?.??.??.??8 'git clone ubuntu@?.??.??.??6:/var/git/our-project.git /var/www/our-project'
Cloning into '/var/www/houseofireland'...
ssh: connect to host ?.??.??.??6 port 22: Connection timed out
fatal: Could not read from remote repository.

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

非常感谢您对此问题的任何可能原因或解决方案。

您能从第一个 EC2 实例 ssh 到第二个实例吗? - Rob
@Rob 我可以从本地ssh到开发和生产的EC2,但是一旦我ssh到生产的EC2,我就无法从那里ssh到开发的EC2。 - Holly
那么这不是git的问题——有可能是防火墙生效了,或者该实例已经列出了白名单IP地址。 - Rob
@Rob,我已经配置了一个AWS安全组,并将生产EC2的公共IP添加到其中,以允许端口22上的SSH入站连接。我会将这个加入我的问题中。你知道是否可以通过SSH进入一个框并从那里进入另一个框,即双重SSH吗? - Holly
1
你绝对可以通过另一台机器进行ssh。ssh应用程序仍在远程计算机上运行,因此如果需要,您可以基本上拥有无限数量的ssh链。至于实际问题,我不确定我能否再提供帮助 - 我对EC2实例不太熟悉,而且问题可能有很多原因。但是,您可以确定它与git本身无关 - 开发机器只是从生产环境中无法访问(也许是正确的?) - Rob
1个回答

1

正如评论中指出的那样,这不是一个git问题,而是ssh问题。

通常情况下,可以从一个EC2实例SSH到另一个实例,但请注意以下内容:

  • EC2实例有一个公共IP,您可以使用它来从AWS网络外访问它们,还有一个私有IP,用于内部使用。此IP的格式为10.X.X.X
  • 当两个EC2实例相互通信时,它们使用不同的DNS服务器,而不是在从AWS网络外访问它们时使用的DNS服务器 - 这就是为什么公共IP(或主机名)无法工作的原因

您应该做的是,在第二个实例的SecurityGroup中将进行SSH隧道的实例放入白名单中(假设它们在同一帐户中)。

希望这可以帮助到您。


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