Как я могу использовать GitHub через жесткие прокси? - PullRequest
22 голосов
/ 24 июня 2009

Учитывая следующие ограничения, как я могу использовать GitHub из Windows и Unix?

  • Весь доступ к Интернету ограничен прокси
  • Прокси-сервер разрешает подключения только напорт 80 и 443
  • Метод CONNECT включен только для 443
  • Требуется проверка подлинности прокси (NTLM или базовая версия)

Ответы [ 3 ]

22 голосов
/ 24 июня 2009

См. «Использование Github через драконовские прокси (Windows And Unix)» Джеффа Тчанга (ранее доступный из другое местоположение ), в котором содержатся инструкции для платформ Windows и Unix, резюмировано ниже.

Unix

  1. Скачать Git.
  2. Скачать и установить Штопор .
  3. Отредактируйте или создайте файл ~/.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
    
  4. Если все настроено правильно, вы сможете запустить ssh github.com и увидеть

    Привет, пользователь! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.
    Соединение с github.com закрыто.

    Если это не сработает, вы можете запустить ssh ssh.github.com и получить точно такую ​​же вещь. Если первая команда не сработала, это означает, что вы используете прокси-сервер, который блокирует CONNECT на порту 22. Почти никакие прокси-серверы не блокируют CONNECT на порту 443, потому что это нужно для SSL.

Windows

  1. Скачать msysgit . Некоторые настройки:
    • «Запустить Git из командной строки Windows»
    • «Используйте OpenSSH» (это очень важно)
    • Укажите окончания строки
  2. Скачать connect.c . Этот инструмент заслуживает отдельного поста в основном из-за его предельной простоты. Он отражает инструмент с открытым исходным кодом штопор и используется для туннелирования через прокси. Да, название инструмента действительно называется «connect.c». Для пользователей Windows доступен предварительно скомпилированный двоичный файл. Я положил connect.exe в C:\Windows\connect.exe.
  3. Решите, хотите ли вы использовать Windows cmd.exe для работы или оболочку в стиле Cygwin. Или оба.
  4. Настройка оболочки 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
    
  5. Настройка оболочки 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
    

Для получения полной информации см. полную запись в блоге .

4 голосов
/ 11 марта 2013

[Поскольку мое добавление к первому ответу, приведенному выше, не было одобрено в течение четырех дней, я поместил его здесь.]

Обратите внимание, что 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 tunnel-auth -p 127.0.0.1:8080 -r% h:% p

1 голос
/ 08 декабря 2011

Мой сценарий немного отличался от сценария Джеффа Чанга (но основывался на его посте), но может быть полезен здесь.

Весь наш доступ к рабочему / корпоративному Интернету осуществляется через неаутентифицирующий прокси. Я смог клонировать с , но не нажать на GitHub: работает

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.

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...