Внимание! Возможно, весь нижеследующий текст не соответствует дествительности. Смотрите оригинальный английский текст по ссылке выше.
В 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, а подробнее о такой настройке написано в этом обсуждении.