Не могу клонировать репозиторий 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
Надеюсь, это поможет кому-нибудь.