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

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

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

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

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

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

9 ответов

Решение

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

Вместо:

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, но только два последних работают на удаленном компьютере с Linux. (Вспоминая об этом, возможно, потому, что на моем Mac настроено глобальное имя пользователя git, а на удаленном боксе - нет? Возможно, так и было, но отсутствие запроса на ввод имени пользователя сбило меня с толку....)

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

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

git config --global http.sslverify false

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

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

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-согласование 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
  • Сделайте еще один запрос на этот URL: " 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: (35) Ошибка подключения SSL

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

sudo yum update -y nss curl libcurl

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

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

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

Я смог заставить работать 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)

чтобы увидеть адреса "тяни и толкай":

Они должны быть изменены с USERNAME@

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

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

USERNAME:PASSWORD@github.....

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

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

Как сказал 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 для этих команд.

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

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

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

Пример:

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

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

Другие вопросы по тегам