Как использовать GitHub через суровые прокси?

StackOverflow https://stackoverflow.com/questions/1040089

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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

Решение

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

Юникс

  1. Загрузите Гит.
  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.

Окна

  1. Скачать мсисгит.Некоторые настройки:
    • «Запустите 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
    

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

Другие советы

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

Обратите внимание, что 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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top