Как использовать GitHub через суровые прокси?
Вопрос
Как я могу использовать GitHub из Windows и Unix, учитывая следующие ограничения?
- Весь доступ в Интернет ограничен прокси-сервером.
- Прокси разрешает соединения только через порты 80 и 443.
- Метод CONNECT доступен только для 443.
- Требуется прокси-аутентификация (NTLM или базовая)
Решение
См «Использование Github через драконовские прокси (Windows и Unix)» автор Джефф Чанг (ранее можно было получить на сайте другое место), который включает инструкции для платформ Windows и Unix, кратко изложенные ниже.
Юникс
- Загрузите Гит.
- Загрузить и установить штопор.
Отредактируйте или создайте файл
~/.ssh/config
и поставьте следующее:ProxyCommand /usr/bin/corkscrew proxy.example.com 443 %h %p ~/.ssh/myauth Host github.com User git Port 22 Hostname github.com IdentityFile "/media/truecrypt1/Keys/GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes Host ssh.github.com User git Port 443 Hostname ssh.github.com IdentityFile "/media/truecrypt1/Keys/GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes
Если все настроено правильно, вы сможете запустить
ssh github.com
и посмотретьПривет пользователь!Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.
Соединение с github.com закрыто.Если это не сработает, вы можете запустить
ssh ssh.github.com
и получите то же самое.Если первая команда не сработала, это означает, что вы используете прокси-сервер, который блокирует CONNECT на порту 22.Почти никакие прокси не блокируют CONNECT на порту 443, потому что это необходимо для SSL.
Окна
- Скачать мсисгит.Некоторые настройки:
- «Запустите Git из командной строки Windows»
- «Используйте OpenSSH» (это очень важно)
- Выберите окончания строк
- Скачать Connect.c.Этот инструмент заслуживает отдельного поста главным образом из-за своей предельной простоты.Он отражает инструмент с открытым исходным кодом «Штопор» и используется для туннелирования через прокси.Да, имя инструмента действительно называется «connect.c». Для пользователей Windows доступен предварительно скомпилированный бинар.я положил свой
connect.exe
вC:\Windows\connect.exe
. - Решите, хотите ли вы использовать Windows
cmd.exe
что-то делать или оболочку в стиле Cygwin.Или оба. Настройте оболочку Cygwin Git bash.
Для оболочки в стиле Cygwin запустите значок Git и отредактируйте файл.
~/.ssh/config
и убедитесь, что файл не имеет расширения.Поместите в этот файл следующее и обратите внимание, как указаны пути.ProxyCommand /c/windows/connect.exe -H username@proxy.example.com:443 %h %p Host github.com User git Port 22 Hostname github.com IdentityFile "/c/Keys/GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes Host ssh.github.com User git Port 443 Hostname ssh.github.com IdentityFile "/c/Keys/GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes
Настройте Windows
cmd.exe
оболочка.Предположим, вам не нравится оболочка Git Bash.Вы предпочитаете интерпретатор cmd.exe.
- Перейдите в файл конфигурации по адресу
C:\Documents and Settings\.ssh\config
- Сделайте его копию или создайте новую.я позвонил своему
config-windows
Поместите в файл следующее, снова обращая особое внимание на разделители путей и стили.
ProxyCommand C:/Windows/connect.exe -H username@proxy.example.com:443 %h %p Host github.com User git Port 22 Hostname github.com IdentityFile "C:\Keys\GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes Host ssh.github.com User git Port 443 Hostname ssh.github.com IdentityFile "C:\Keys\GitHubKey.private" TCPKeepAlive yes IdentitiesOnly yes
- Перейдите в файл конфигурации по адресу
Полную информацию см. полная запись в блоге.
Другие советы
[Поскольку мое дополнение к первому ответу, приведенному выше, не было одобрено в течение четырех дней, я разместил его здесь.]
Обратите внимание, что corkscrew
и connect
, а также стандартная команда Unix nc
поддерживают только базовую аутентификацию (которая небезопасно передает пароль).
tunnel-auth
версия 0.04 кроме того, поддерживается дайджест-аутентификация.
Если ваш прокси требует аутентификации NTLM, все эти команды можно очень хорошо комбинировать с cntlm
следующее:
Выберите локальный порт (например, 8080, как в примерах ниже), на котором cntlm
Слушает (выполняя аутентификацию пользователя с прокси и пересылаю любые дополнительные пакеты в/из прокси), установите порт и т. Д.(например, в/etc/cntlm.conf
) и используйте вместо ProxyCommand, указанного выше (с вставленным соответствующим номером порта):
ProxyCommand штопор 127.0.0.1 8080 %h %p
или
ProxyCommand Connect -H 127.0.0.1:8080 %h %p
или
ProxyCommand nc -X connect -x 127.0.0.1:8080 %h %p
или
ProxyCommand туннель-auth -p 127.0.0.1:8080 -r %h:%p
Мой сценарий немного отличался от сценария Джеффа Чанга (но основан на его сообщении), но может быть здесь полезен.
Весь наш рабочий/корпоративный доступ в Интернет осуществляется через прокси-сервер без аутентификации.мне удалось клонировать от но не толкать к гитхаб:бег
git push -u origin master
вернусь
ssh: connect to host github.com port 22: Operation timed out
fatal: The remote end hung up unexpectedly
На основе http://returnbooleantrue.blogspot.com/2009/06/using-github-through-draconian-proxies.html и http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x и http://www.mtu.net/~engstrom/ssh-proxy.php Мне удалось загрузить/установить штопор и добавить следующее в мой ~/.ssh/config:
Host github.com
User git
Port 22
Hostname github.com
TCPKeepAlive yes
IdentitiesOnly yes
ProxyCommand /usr/local/bin/corkscrew proxy.<my-workplace>.com 8080 %h %p
Некоторые моменты, на которые следует обратить внимание:
Я также использую свой рабочий/корпоративный закрытый ключ с GitHub:если вы этого не сделаете, вам нужно будет добавить строку «IdentityFile».
В отличие от Джеффа Чанга (и благодаря mtu.net), мне не нужно было иметь «~/.ssh/myauth» в конце строки ProxyCommand.
Мне не нужно было настраивать раздел хоста ssh.github.com.
Надеюсь, это поможет.