Невозможно клонировать репозиторий github в Linux через HTTPS


87

Я пытаюсь сделать простую git clone https://github.com/org/project.gitоперацию на CentOS, но получаю:

ошибка: запрошенный URL вернул ошибку: 401 при доступе к https://github.com/org/project.git/info/refs

фатальный: HTTP-запрос не удался

Он никогда не запрашивает у меня имя пользователя / пароль, просто терпит неудачу.

Я могу без проблем сделать тот же звонок на своем Mac - что мне не хватает?


Это свежая широко открытая коробка CentOS 6.3 в облаке - доступ в Интернет не проблема
— Ярин

@Yarin: Надеюсь, вы уже читали это: help.github.com/articles/https-cloning-errors . Я думаю, что последнее средство - использовать ssh. Кроме того, вы можете проверить электронную почту, на которую настроен ваш git ... не уверен, помогает ли это, но убедитесь, что он соответствует тому, который вы используете с вашей учетной записью github.
— greg0ire

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

Ответы:


210

Ответ был прост, но не очевиден:

Вместо того:

git clone https://github.com/org/project.git

делать:

git clone https://username@github.com/org/project.git

или (небезопасно)

git clone https://username:password@github.com/org/project.git

(Обратите внимание, что в последнем случае ваш пароль может быть виден другим пользователям на вашем компьютере при запуске ps u -u $youи по умолчанию будет отображаться в виде открытого текста в истории вашей оболочки)

Все 3 способа работают на моем Mac, но только последние 2 работали на удаленном компьютере с Linux. (Вспоминая это, вероятно, это потому, что у меня было глобальное имя пользователя git, настроенное на моем Mac, тогда как на удаленном ящике я этого не делал? Это могло быть так, но отсутствие запроса имени пользователя сбило меня с толку ... .)

Я нигде не видел этого, так что вот он.


3
Спасибо, что упомянули эту git config --global user.nameдеталь, это было для меня!
— GermanK

Обратите внимание, что с git 1.7.10 вам будет предложено ввести имя пользователя, согласно @JERC , так что это больше не должно быть проблемой ..
— Yarin

У меня была такая же проблема (с GIT 1.7.1, CentOS5), но я не мог добавить имя пользователя / pwd в URL-адреса, потому что мне пришлось устанавливать пакеты из частных репозиториев Bitbucket (и, очевидно, я не буду добавлять имя пользователя и pw информацию в composer.json / composer.lock). Поскольку GIT не позволял мне набирать их вручную, мне пришлось пройти нелегкий путь и обновить GIT с помощью репозитория RPM Forge ( guru4hp.blogspot.hu/2012/08/… ). Я следил за руководством @muness, которое можно найти здесь: serverfault.com/questions/448814/…
— hattila

2
Это ответ, если вы используете git 1.7.1 в Linux
— Луи Миранда

1
применимо при использовании чего-либо до 1.7.10
— Amit G

32

Вы можете вручную отключить ssl verfiy и попробовать еще раз. :)

git config --global http.sslverify false

3
Для BeagleBone Black с Angstrom opkg не предоставляет необходимую версию для проверки ssl, так что это единственный работающий вариант.
— Джозия

1
Оператор @flickerfly действителен .. нет другого способа клонирования с использованием https, кроме использования этого метода при использовании beaglebone black с ОС Angstrom.
— Funky81

1
Работает на Centos. Спасибо.
— 030

Отключение проверки ssl немного опасно. Теоретически злонамеренный посредник может отправить вам модифицированный репозиторий git.
— Марк Долинер

Так же приходилось делать это при использовании GitLab
— Джерард

12

Убедитесь, что у вас установлен git 1.7.10 или новее, теперь он правильно запрашивает пользователя / пароль. (Вы можете скачать последнюю версию здесь )


4
У меня была такая же проблема, моя версия git была 1.7.1, когда я обновляюсь до 1.7.10, теперь она запрашивает пользователя / пароль правильно !!, (версия 1.7.1 НЕ ТО ЖЕ ЖЕ, что и 1.7.10) Пожалуйста, проверьте версии перед посвященным.
— JERC

10

Мне пришлось указать имя пользователя для работы с версией 1.7.1 git:

git remote set-url origin https://username@github.com/org/project.git

10

Я столкнулся с той же проблемой, сообщение об ошибке и информация об ОС следующие

Информация об ОС:

Релиз CentOS 6.5 (окончательный)

Linux 192-168-30-213 2.6.32-431.el6.x86_64 # 1 SMP Пт, 22 ноября, 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

информация об ошибке:

Инициализированный пустой репозиторий Git в /home/techops/pyenv/.git/ Пароль: ошибка: при доступе к https: //waterdrops@github.com/pyenv/pyenv.git/info/refs

фатальный: HTTP-запрос не удался

информация о версии git и curl

информация о git: версия git 1.7.1

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl / 7.19.7 NSS / 3.14.0.0 zlib / 1.2.3 libidn / 1.18 libssh2 / 1.4.2 Протоколы: tftp ftp telnet dict ldap ldaps http файл https ftps scp sftp Особенности: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

отладка

$ curl --verbose https://github.com

  • О подключении () к порту 443 github.com (# 0)
  • Пробую 13.229.188.59 ... подключил
  • Подключен к github.com (13.229.188.59) порт 443 (# 0)
  • Инициализация NSS с помощью certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: нет
  • Ошибка NSS -12190
  • Ошибка в рукопожатии TLS, попытка SSLv3 ... GET / HTTP / 1.1 User-Agent: curl / 7.19.7 (x86_64-redhat-linux-gnu) libcurl / 7.19.7 NSS / 3.14.0.0 zlib / 1.2.3 libidn / 1.18 libssh2 / 1.4.2 Хост: github.com Принять: /

  • Подключение прервано, повторная попытка подключения

  • Закрытие соединения # 0
  • Выпуск другой запрос на этот адрес: « https://github.com »
  • О подключении () к порту 443 github.com (# 0)
  • Пробую 13.229.188.59 ... подключил
  • Подключен к github.com (13.229.188.59) порт 443 (# 0)
  • TLS отключен из-за ошибки предыдущего установления связи
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: нет
  • Ошибка NSS -12286
  • Закрытие соединения # 0
  • Ошибка подключения SSL curl: (35) Ошибка подключения SSL

после обновления curl, libcurl и nss git clone снова работает нормально, так что вот оно. команда обновления выглядит следующим образом

sudo yum update -y nss curl libcurl


Спасибо - у меня это сработало лучше всего с bitbucket в репо на старом клиентском сервере CentOS 6.6, на котором запущен git 1.7.1
— Эрик Кигати

У меня проблема с gitlab-ci runner. Работает нормально после апгрейда.
— isca

6

Как сказал JERC, убедитесь, что у вас установлена ​​обновленная версия git. Если вы используете только настройки по умолчанию, при попытке установить git вы получите версию 1.7.1. Помимо загрузки и установки последней версии get вручную, вы также можете сделать это, добавив новый репозиторий в yum.

С сайта tecadmin.net :

Скачайте и установите репозиторий rpmforge:

# use this for 64-bit
rpm -i 'http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm'
# use this for 32-bit
rpm -i 'http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm'

# then run this in either case
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Затем вам нужно включить rpmforge-extras. Отредактируйте /etc/yum.repos.d/rpmforge.repoи измените enabled = 0на enabled = 1под [rpmforge-extras]. Файл выглядит так:

### Name: RPMforge RPM Repository for RHEL 6 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0 ####### CHANGE THIS LINE TO "enabled = 1" #############
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/testing
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

Как только вы это сделаете, вы можете обновить git с помощью

yum update git

Я не уверен, почему, но затем они предлагают отключить rpmforge-extras (вернуться к enabled = 0), а затем запустить yum clean all.

Скорее всего, вам понадобится использовать sudoдля этих команд.


Действительно отличный ответ! Решил мои проблемы на Redhat (RHEL) 6.3.
— Макс

Вместо того, чтобы вручную редактировать файл репо дважды (сначала включите дополнительные функции, а затем снова отключите), я просто запустил, yum install --enablerepo=rpmforge-extras gitи все!
— alleen1 06

6

Спустя некоторое время мне удалось заставить работать git 1.7.1.

Сначала мне пришлось отключить SSL, чтобы я мог вытащить:

git config --global http.sslverify false

Тогда я мог клонировать

git clone https://github.com/USERNAME/PROJECTNAME.git

Затем после добавления и фиксации я НЕВОЗМОЖНО отодвинуть. Так я и сделал

git remote -v

origin  https://github.com/USERNAME/PROJECTNAME.git (fetch)
origin  https://github.com/USERNAME/PROJECTNAME.git (push)

чтобы увидеть адреса pull и push:

Их необходимо изменить с помощью USERNAME @

git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

Он по-прежнему будет запрашивать пароль, который вы можете добавить с помощью

USERNAME:PASSWORD@github.....

Но не делайте этого, так как вы сохраняете свой пароль в виде открытого текста для облегчения кражи.

Мне пришлось использовать эту комбинацию, так как я не мог заставить работать SSH из-за ограничений брандмауэра.


4

Это самый тупой ответ на этот вопрос, но проверьте статус GitHub . Это меня достало :)


Сообщение от сегодняшнего дня: «Мы все еще работаем над предотвращением очень крупной DDoS-атаки. Сайт теперь доступен для некоторых пользователей, но мы будем оставаться в красном статусе, пока мы не будем уверены, что сайт работает». Кто взламывает GitHub? В самом деле?
— BenDundee

явно не хомаков, он обязуется осваивать вместо DDoS
— nurettin

3

У меня была такая же проблема и ошибка. В моем случае это был не установленный https_proxy. Установка переменной среды https_proxy устранила проблему.

$ export https_proxy=https://<porxy_addres>:<proxy_port>

Пример:

$ export https_proxy=https://my.proxy.company.com:8000

Надеюсь, это кому-нибудь поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.