Внимание! Возможно, весь нижеследующий текст не соответствует дествительности. Смотрите оригинальный английский текст по ссылке выше.
В Git имеется возможность подключаться к репозитарию через промежуточную Linux-машину, на которой работает SSH, и на которой есть интернет. Как это сделать, написано в данной статье.
Первое, что нужно знать, что настройки Git http.proxy не используются для настройки соединения по SSH. Вместо этого нужно создать прокирующее SSH соединение. Подробности здесь . Кратко, нужно сделать вот что:
Нужно запустить git-cmd.bat и создать файл ~/.ssh/config (Это можно сделать через Блокнот, с помощью команды notepad %home%\.ssh\config)
В данном файле нажно разместить следующие настройки:
ProxyCommand /bin/connect.exe -H proxy.server.name:3128 %h %p
Host github.com
User git
Port 22
Hostname github.com
IdentityFile "C:\users\username\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "C:\users\username\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
В данном коде надо прописать правильное имя/IP и порт машины, на которой поднят SSH сервер. А так же нужно указать правильный путь до файла id_rsa.
Возможно, что у вас нет бинарника connect.exe. Его можно взять из сборки msysgit . Так же, готовый бинарник доступен по этой ссылке . Кроме того, в сборке MinGW он лежит по такому пути: C:\Program Files\Git\mingw64\bin\connect.exe.
После такой настройки, Github через SSH должен начать работать.
Если есть необходимость соединиться через SOCKS5-прокси, надо в настроечном файле просто поменять ключ -H на -S:
ProxyCommand connect -S proxy.server.name:1080 %h %p
Если вы используете Linux, а не Windows, то нужно проверить, чтобы на файле ~/.ssh/config стояли права 600.
Примечание: если ваш SOCKS5-proxy требует аутентификации NTLM, можно воспользоваться cntlm , а подробнее о такой настройке написано в этом обсуждении .