Оболочка не смотрит на системный прокси
Системный прокси влияет только на программы, которые читают системные настройки. Большинство консольных утилит этого не делает: они смотрят на переменные http_proxy и https_proxy либо на собственные конфиги. Поэтому таймаут у git clone при исправно работающем браузере — ожидаемое поведение, а не поломка клиента.
Два исключения стоит запомнить сразу. Режим TUN перехватывает трафик на сетевом уровне, и консольные утилиты работают вообще без настройки. А вот SSH не признаёт http_proxy ни при каких условиях и требует ProxyCommand.
Настройка по инструментам
- 1
Переменные окружения, на текущую сессию
В Linux и macOS экспортируйте https_proxy и http_proxy со значением http://127.0.0.1:7897. В PowerShell присвойте то же значение $env:HTTPS_PROXY. Действует, пока открыто окно; чтобы закрепить, пропишите в .bashrc или в профиль PowerShell.
- 2
Git
Задайте адрес прокси в git config --global http.proxy и то же самое для https. Чтобы проксировать только GitHub, используйте форму с привязкой к адресу: git config --global http.https://github.com/.proxy. Убрать любую из настроек можно ключом --unset.
- 3
npm и pip
npm config set proxy задаёт прокси, а registry меняет зеркало — это разные вещи, не путайте их. pip принимает --proxy для разовых запусков или то же значение в pip.conf.
- 4
SSH
Добавьте строку ProxyCommand для нужного Host в ~/.ssh/config. В Linux и macOS для SOCKS5 обычно берут nc -X 5 -x, в Windows подходит утилита connect из поставки Git.
Проверка и типичные опечатки
Выполните curl к ipinfo.io/ip. Если вернулся адрес вашего узла, прокси работает. Если curl проходит, а git нет, проверьте эту настройку отдельно через git config --global --get http.proxy.
- Значение https_proxy начинается с http://, а не https:// — схема описывает сам прокси-сервер
- Без завершающего слеша и без пути в адресе прокси
- Через no_proxy исключите localhost, 127.0.0.1 и внутренние домены компании
Частые вопросы
Переменные заданы, но всё равно connection refused.
По убыванию вероятности: неверный номер порта, клиент не запущен, значение начинается с https://. Сравните смешанный порт в интерфейсе клиента с тем, что вы вписали.
После настройки прокси перестали открываться внутренние адреса.
Добавьте внутренние домены и подсети в no_proxy вместе с localhost и 127.0.0.1. У Git и npm есть собственные аналогичные настройки.