Конфигурация для использования Mercurial с Bitbucket из-за прокси для перезаписи сертификатов?

Я пытаюсь получить доступ к BitBucket с работы. Единственный доступ к Интернету осуществляется через HTTP-прокси с проверкой подлинности, который проксирует http на порт 8080 и SSL на порт 8070. Этот прокси-сервер проводит атаку «злоумышленник посередине» на SSL-соединения, браузеры могут создавать HTTPS-соединения с Интернетом. только из-за установки поддельного сертификата Websense на всех клиентах.

Я могу подключиться к BitBucket с помощью Git, но не с помощью Mercurial. Я использую Mercurial версии 2.0.2.

С Git я использую следующую конфигурацию в .gitconfig

[user]
    name = Firstname Lastname
    email = [email protected]
[http]
    proxy = http://name:[email protected]:8080

И можете клонировать репозиторий с помощью следующей команды

D:\MercurialTesting>git clone http://[email protected]/Firstname_Lastname/bb102repo.git test1
Cloning into 'test1'...
Password for 'bitbucket.org':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.

D:\MercurialTesting>

С добавлением этого параметра конфигурации

[http]
    sslverify = false

Я также могу клонировать репозиторий через https-адрес https://[email protected]/Firstname_Lastname/bb102repo.git

Но при использовании Mercurial это совсем другая история. Используя следующую конфигурацию в mercurial.ini

[http_proxy]
host = nnn.nnn.nnn.nnn:8080
user = [email protected]
passwd = password

Mercurial без проблем получит доступ к моему собственному серверу Mercurial дома.

D:\MercurialTesting>hg --debug clone http://nnn.nnn.nnn.nnn/hg/Workspaces/Test1
using http://nnn.nnn.nnn.nnn/hg/Workspaces/Test1
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
http authorization required
realm: Mercurial Repositories
user: username
password:
http auth: user username, password *******
destination directory: Test1
query 1; heads
sending batch command
http auth: user username, password *******
requesting all changes
sending getbundle command
http auth: user username, password *******
adding changesets
changesets: 1 chunks
add changeset 711ff2c6f5b2
changesets: 2 chunks
add changeset 9034b963b4c1
. . .

Использование той же конфигурации и попытка доступа к BitBucket через Mercurial просто зависает.

D:\MercurialTesting>hg --debug clone http://bitbucket.org/Firstname_Lastname/bb101repo
using http://bitbucket.org/Firstname_Lastname/bb101repo
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
abort: error: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

D:\MercurialTesting>

Использование той же конфигурации с SSL через URL-адрес https://bitbucket.org/Firstname_Lastname/bb101repo Mercurial зависает в точно так же. Во время этого процесса Wireshark вообще не обнаруживает сетевой активности.

Изменение настроек Mercurial.ini в соответствии с портом, через который прокси-сервер обслуживает SSL, не имеет никакого эффекта. Установка переменной окружения http_proxy не имеет значения, но установка переменной окружения https_proxy полностью меняет вывод. Установка https_proxy и добавление --insecure к вызову команды hg приводит к:

D:\MercurialTesting>hg --debug clone http://bitbucket.org/Firstname_Lastname/bb101repo --insecure
using http://bitbucket.org/Firstname_Lastname/bb101repo
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
warning: bitbucket.org certificate with fingerprint 79:ce:0d:30:b0:17:29:6a:d1:9f:dd:d3:62:80:70:28:5e:9f:c2:e3 not verified (check hostfingerprints or web.cacerts config setting)
http authorization required
realm: Bitbucket.org HTTP
user: Firstname_Lastname
password:
http auth: user Firstname_Lastname, password ***
warning: bitbucket.org certificate with fingerprint 79:ce:0d:30:b0:17:29:6a:d1:9f:dd:d3:62:80:70:28:5e:9f:c2:e3 not verified (check hostfingerprints or web.cacerts config setting)
abort: HTTP Error 502: Success

D:\MercurialTesting>

И теперь Wireshark обнаруживает обмен, происходящий между моей рабочей станцией и прокси-сервером. Что меня больше всего сбивает с толку, так это то, что это не имеет ни малейшего значения какой я установил https_proxy, hg всегда использует настройку http-прокси из Mercurial.ini и выдает тот же результат, что и выше, независимо от того, установите https_proxy на правильные данные для прокси SSL или для полного мусора. Единственная разница в том, что если переменная окружения https_proxy вообще не установлена, то hg просто зависает, как описано выше.

Форматы https_proxy, которые я пробовал, включают все варианты:

https_proxy=ip.ip.ip.ip:8070
https_proxy=ip.ip.ip.ip:8080
https_proxy=username:[email protected]:8070
https_proxy=username:[email protected]:8080
https_proxy=http://ip.ip.ip.ip:8070
https_proxy=http://ip.ip.ip.ip:8080
https_proxy=http://username:[email protected]:8070
https_proxy=http://username:[email protected]:8080

Результаты одинаковы, независимо от того, что я установил.

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

Почему я могу получить доступ к своим репозиториям Mercurial дома, но не через BitBucket?

Почему я могу получить доступ к BitBucket с помощью Git, но не с Mercurial, используя ту же конфигурацию?

Есть ли у кого-нибудь идеи, как я могу заставить это работать или что я могу протестировать дальше?


person Neutrino    schedule 24.01.2012    source источник
comment
Настоящий канал поддержки Mercurial - это список рассылки: [email protected]. Пожалуйста, отправьте письмо с вашим вопросом.   -  person Martin Geisler    schedule 24.01.2012
comment
У меня возникла аналогичная проблема, но при подключении к BitBucket аутентификация для моего репозитория не выполняется, даже если я ЗНАЮ, что пароль правильный.   -  person MattGWagner    schedule 21.02.2012
comment
Вы когда-нибудь решали это? Все эти годы я сталкиваюсь с той же проблемой ...   -  person kayleeFrye_onDeck    schedule 12.02.2016
comment
Нет, не знал. Вместо BitBucket я разместил свои личные проекты на Fogbugz и Kiln. Kiln предоставляет установку инструментов с предварительно сконфигурированной установкой TortoiseHg, которая с тех пор отлично работает для меня. Функции управления проектами в Fogbugz тоже довольно хороши, и вся их система полностью бесплатна для одного пользователя.   -  person Neutrino    schedule 12.02.2016


Ответы (3)


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

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

hg --config http_proxy.host=192.168.1.1:8080 --config http_proxy.user=Vad1mo --config http_proxy.passwd=secret clone https://bitbucket.org/Vadimo/test

С другой стороны, те же записи в Mercurial.ini не работали.

[http_proxy]
host = 192.168.1.1
port = 8080
user = Vad1mo
passwd = internet 

Случайно я обнаружил крошечную разницу между CMD и ini. В CMD порт привязан к хосту. В ini-файле это новая запись.

Изменение mercurial.ini на постфиксный порт для хоста, как в командной строке, решило проблему.

[http_proxy]
host = 192.168.1.1:8080
;port = 8080
user = Vad1mo
passwd = internet 

Может быть, это вам тоже поможет.

Кстати. моя версия hg - 2.6.3

person Vadimo    schedule 12.07.2013

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

Я решил эту проблему, установив http_proxy в mercurial.ini, а затем подключившись к BitBucket через их HTTP-адрес hg.io.

Например, мой репозиторий на https://bitbucket.org/mattgwagner/mattgwagner.com может быть доступ через http://hg.io/mattgwagner/mattgwagner.com. Конечно, это отправит ваш пароль и соединение в виде открытого текста, но, по крайней мере, это позволит мне подключиться.

Это мне больше пригодилось, когда я использовал проекты с открытым исходным кодом, размещенные на BitBucket.

Mercurial.ini
[http_proxy] host = 192.168.1.155:8080
no =
user = domainUsername
passwd = pass

person MattGWagner    schedule 16.04.2012
comment
Спасибо за информацию. Я очень надеялся, что это исправит, но без радости. Этот URL-адрес работает из дома, но не на работе. Вставить его в браузер и проверить CSRF отчетов BitBucket не удалось. Запрос прерван. ' Поиск в Google указывает на то, что ошибка может быть вызвана несоответствием заголовка рефереров http, хотя я не блокирую заголовок рефереров в моем браузере. Я не уверен, вызвана ли половина наших сетевых проблем конфигурацией сетевой безопасности или просто наша сетевая команда невежественна. - person Neutrino; 17.04.2012

Вы можете отключиться по ssh? Bitbucket поддерживает доступ по ssh, и ваш прокси-сервер не будет работать с ним, если это разрешено.

person Ry4an Brase    schedule 10.04.2012
comment
К сожалению нет. Вся сеть заблокирована крепче, чем у комара. - person Neutrino; 11.04.2012
comment
Поскольку вы можете попасть на stackoverflow.com, возможно, вы сможете подключиться к careers.stackoverflow.com. Это может помочь с проблемой брандмауэра. ;) - person Ry4an Brase; 11.04.2012