Подтвердить что ты не робот

Git нажмите на удаленный репозиторий "Не удалось прочитать из удаленного хранилища"

Я искал какое-то время, но я не могу найти решение моей проблемы.

У меня есть сервер, с которым я могу подключиться через ssh с именем пользователя git и локальным репозиторием git.
Теперь я хочу, чтобы мой локальный репозиторий был создан на вновь созданном сервере.

Вот что я сделал:

  • создал репозиторий git в /home/git/test.git
  • инициализировал репозиторий как голый
  • добавлен удаленный репозиторий на локальном компьютере
    git remote add test ssh://[email protected]:/home/git/test.git
  • теперь я выполнил команду push:
    git push test master

Я всегда получаю

fatal: could not read from remote repository

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

Я работаю над локальной машиной Windows 7 и хочу загрузить на сервер Linux.
Я могу войти через ssh с пользователем git. Я также пытался сделать это как пользователь root (чтобы заставить вещи работать один раз) с тем же результатом.
Меня никогда не спрашивают ssh password.

Я действительно не знаю, что я делаю неправильно.
Прежде чем вы назовете это дубликатом, я много искал эту проблему, и никто, похоже, не говорил об одной и той же проблеме.

update:

  • ", который git" возвращает /usr/bin/ git
  • PATH echo включает /usr/bin
  • id_rsa и id_rsa.pub все настроены и имеют значение Passphrase
  • ssh git @serverIp, с которым работает git -receive-pack, и возвращает /usr/bin/ git -receive-pack
  • ssh git @serverIp ls/home/git/test.git работает
  • все соответствующие каталоги - chmod 755
  • git является владельцем репозитория
  • Файл auth.log не получает новых записей в команде try push
  • GIT_TRACE = 2 git push test master возвращает:

    'C:\Program Files (x86)\PuTTY\plink.exe' '-batch' 'git @serverIp' 'git -receive-pack'\''/home/git/test.git '\' '' fatal: Не удалось прочитать из удаленного репозитория. Убедитесь, что у вас есть правильные права доступа, и существует репозиторий.

4b9b3361

Ответ 1

В этом случае ключевым словом является использование openssh over putty.


Оригинальный ответ (советы по отладке)

Я могу войти через ssh с пользователем git.

Это означает, что это работает:

ssh [email protected]

У вас есть определенная переменная HOME и ssh public/private keys (id_rsa/id_rsa.pub) в %HOME%/.ssh/.

Этот вопрос предлагает другой URL:

git remote set-url test [email protected]:/home/git/test.git

Убедитесь, что вы создали репозиторий git как git (а не как root, когда вы создали учетную запись git, как в этот вопрос)).
ssh [email protected] "which git" должен возвращать путь к исполняемому файлу git.

Проверьте также, что все родительские каталоги имеют соответствующий бит x (выполнить), установленный для пользователя git или группы gitgroup, запустив ls -ld /home /home/git /home/git/test.git.
Кроме того, получение дополнительной информации для команды git может быть выполнено с помощью:

  • git push --verbose
    или:
  • GIT_TRACE=2 git push test master

Если у вас есть закрытый ключ ssh с паролем, было бы лучше сначала проверить эти команды ssh с закрытым ключом ssh, но не защищенным паролем, чтобы узнать, не исчезла ли проблема.
Или вы можете сохранить защищенный паролем ключ ssh, но дважды проверьте свой .bashrc как в этом ответе.


Для любой проблемы подключения ssh (где требуется пароль git), проверьте:


В вашем случае, поскольку он работает с ssh [email protected] (интерактивная защищенная оболочка), но не с git (который открывает неинтерактивную защищенную оболочку), посмотрите этот поток, который ссылается на этот:

Когда ssh запускается с помощью командной строки, запускается неинтерактивная оболочка без входа.
Однако... bash в этом случае не использует $BASH_ENV, поэтому настройка его в ~/.ssh/environment (например, на /etc/profile) не помогает.
Что означает bash - это источник /etc/bashrc и ~/.bashrc.

Убедитесь, что /etc/profile определяет путь для git, поскольку учетная запись не может войти в систему используется здесь (это, как представляется, здесь, так как ssh [email protected] "which git" работал, а ssh [email protected] "git --version" тоже).

Но проверьте правильную проблему и проверьте chmod 755 на /home, /home/git и /home/git/test.git.

Ответ 2

У меня лично было две проблемы:

  • plink (который используется git в Windows) не принимает id_rsa закрытый ключ, как в формате OpenSSH 2 = > Мне пришлось преобразовать его (используя puttygen) в PuTTY собственный формат .ppk и прикрепить через git Диалоговое окно "Remotes"

  • Я неправильно указал путь к папке git, потому что моя сессия ssh была chrooted (это может быть неправильное слово), и я указал, что мой FTP "root" как "/", тогда как это было "/home/www/username/".

Я все это понял, используя GIT TRACE=2, как описано выше, а также с помощью procmon для определения точной командной строки для plink, а затем воспроизведения с ней, добавив опцию "-v" ( "verbose" )).

Ответ 3

Вы также можете проверить свои идентификаторы SSH, выполнив следующие действия:

$ ssh-add -L

У меня была аналогичная проблема. В моей личности был неправильный ключ, не помните, почему. Я просто удаляю все свои личность (возможно, вам нужно будет снова добавить ключи):

$ ssh-add -D  

Тогда я сделал push/pull без проблем.

Ответ 4

Установите переменную окружения GIT_SSH на полный путь TortoisePlink.exe (вам может потребоваться загрузить TortoiseGit для этого) вместо PuTTY plink.exe. Это позволит всплывающему диалоговому окну запрашивать все, т.е. Подтвердить отпечаток пальца или ввести пароль. Если вы используете plink.exe через Git, вы не можете вводить ответы на запросы plink.exe, которые, если есть какие-либо подсказки, вызовут фатальную ошибку, которую вы видели.