|
|||||||
Время создания: 25.08.2017 14:39
Автор: xintrea
Текстовые метки: git, github, socks, socks5, proxy, прокси, linux, windows
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/1503661151r26wt3zr03/text.html на raw.github.com
|
|||||||
|
|||||||
В сети есть обсуждение такого нерешенного вопроса: Работа Git (например с GitHub) через SOCKS5 Proxy в условиях отсутствия DNS Кратко, проблема вот в чем: Нахожусь в корпоративной сети. Имею доступ как пользователь к линуховому серверу, у которого есть выход в интернет. Захожу на этот сервер по SSH через Putty. > git config --list http.proxy='socks5://127.0.0.1:9999' https.proxy='socks5://127.0.0.1:9999' socks.proxy=127.0.0.1:9999 socks5.proxy=127.0.0.1:9999
> git push ssh: github.com: no address associated with name fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
В ответ на этот вопрос было предложено решение: прописать IP адрес github.com в файл windows\system32\drivers\etc\hosts. Проблема в том, что это решение не помогает, потому что вопрос оказался куда сложнее. Перед дальнейшим обсуждением, подведу краткий итог. Для организации доступа Git в Интернет надо: 1. Иметь запущенным Putty с проброшенным SOCKS5 туннелем (опция -D): putty.exe -load funnyLinuxHost -D 9999 10.159.168.48 2. В конфиге Git (в каталоге пользователя есть файл .gitconfig) иметь, как минимум, опцию: [http] proxy = socks5://127.0.0.1:9999 3. В файле hosts иметь интернетовый IP-адрес для доменного имени github.com А что нужно еще, написано дальше. Долгие попытки настройки показали, что обращение к socks-прокси возможно только при использовании http/https протокола. Git не работает через socks5-прокси, если адрес репозитария прописан по протоколу git, например git@github.com:xintrea/monitoring-sp.git. Обнаружить эту особенность в документации мне не удалось (может быть плохо читал), но по факту это так. Если поменять в настройках репозитария адрес сервера на протокол https (например на https://github.com/xintrea/monitoring-sp.git), то Git начинает соединяться с github. (Настройки репозитария проще всего поменять в файле ./git/config, опция url). Казалось бы, проблема решена. Но нет, тут вступает в дело политика самого GitHub.com. Дело в том, что соединение на внесение изменений в репозитарий (например git push) на сервисе GitHub.com допустимо как про протоколу git, так и по протоколу https. Но есть нюанс: по протоколу git возможна авторизация по SSH ключу, а по протоколу https такая авторизация почему-то запрещена, даже если все ключи установлены. Поэтому при использовании репозитария по протоколу https, Git будет всегда запрашивать логин и пароль. Теперь возникает вопрос: как комфортно работать с удаленным репозитарием по протоколу https, чтобы все время не вводить логин-пароль на каждую операцию. Оказывается, этот вопрос не так уж и прост. Например, можно попытаться воспользоваться кешированием пароля: Caching your GitHub password in Git Но и тут проблема: кеширование пароля (в среде Windows) работает только в нативном Git-шелле Git for Windows. А если пользоваться обычным cmd, то в нем такой возможности нет. Опять же об удобстве использования в нативном окружении Windows не может быть и речи. Таким образом, для решения данного вопроса придется идти на крайние меры: прописать логин и пароль прямо в https-линк репозитария. Вот так: [remote "origin"] url = https://пользователь:пароль@github.com/xintrea/monitoring-sp.git Да, это не секьюрно, но другого варианта нормальной работы через socks5-proxy в Windows просто нет. |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|