Невозможно клонировать репозиторий 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 или новее, теперь он правильно запрашивает пользователя / пароль. (Вы можете скачать последнюю версию здесь )

JERC
источник
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 из-за ограничений брандмауэра.

Heine Nørby
источник
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

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

Сентил Кумар Секар
источник