Проблема с клонированием репозитория git из экземпляра EC2

#git #amazon-ec2

#git #amazon-ec2

Вопрос:

Я пытаюсь разместить пустой репозиторий git на сервере Ubuntu, работающем на Amazon EC2. Сложность, с которой я сталкиваюсь, заключается в том, чтобы заставить git клонировать репозиторий с моего локального компьютера.

Когда я пытаюсь:

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

Я получаю:

 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 также должна работать.

Но нет.

Я исследовал и попробовал несколько вариантов, но у меня просто есть подозрение, что мне не хватает чего-то очень простого.

Ответ №1:

Убедитесь, что 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 -o/tmp/tr -s128 -f ssh git@ec2-blah.compute-1.amazonaws.com git-upload-pack '/opt/git/project.git'
  

Сообщите об отладочной информации, указанной выше, если проблемы все еще существуют.

Комментарии:

1. Спасибо за помощь в отладке. Это натолкнуло меня на несколько идей. Я не могу объяснить почему, но обновление моей версии msysgit 1.7.3.1 preview до 1.7.4 preview, казалось, решило проблему. Я надеялся на что-то более понятное, чем это, но вот оно.

Ответ №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:// запрос, и он сработал.

Я надеюсь, что это поможет.

Ответ №3:

Возможно, учетная запись git не имеет доступа на чтение / запись к этому репозиторию / ветке.

Комментарии:

1. В процессе проверки вашего предложения. Но вам нужно больше, чем доступ на чтение для клона?

Ответ №4:

Git использует порт 9418. Открыто ли это в вашем экземпляре?

Комментарии:

1. Действительно? Я думал, что git работает по протоколу ssh (порт 22), что я и пытался сделать. У меня открыты порты 80 и 22. Я не использую сервер git (gitosis?).

2. Единственным протоколом git / демоном git является 9418

Ответ №5:

Попробуйте добавить ssh: // к удаленному адресу. Мне никогда не удавалось заставить git стабильно работать без него.

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