Разработчикам
SSH и Git не дожидаются ответа на Mac
SSH и Git нужно рабочее TCP-подключение к серверу. Сеть, блокирующая порт 22, неработающий путь IPv6 или прокси могут его не пропустить.
Симптомы
git pushилиgit cloneдолго ждёт, а затем выдаёт «Operation timed out».sshвыдаёт «Connection timed out» в одной сети, но работает в другой.- Сеанс SSH зависает после нескольких минут простоя.
- Удалённые репозитории Git по HTTPS работают, а по SSH — нет.
Вероятные причины
- Порт 22 заблокирован. Некоторые корпоративные, гостиничные и публичные сети блокируют SSH. GitHub отмечает, что брандмауэры иногда отклоняют подключения SSH.
- Неработающий путь IPv6. Mac сначала пробует IPv6. Если IPv6 не работает, подключение повисает в ожидании.
- Простаивающие подключения закрываются. Роутер или брандмауэр может разорвать подключение, по которому какое-то время не идут данные.
- Нужен прокси. Git по HTTPS в корпоративной сети может требовать
http.proxyили переменных прокси.
Как проверить
Подключитесь с подробным выводом. Последние строки покажут, где останавливается подключение.
ssh -vT git@github.comПроверьте только TCP-порт, с тайм-аутом 5 секунд.
nc -vz -G 5 github.com 22Попробуйте только IPv4. Если так работает, проблема в пути IPv6.
ssh -4 -T git@github.comПроверьте службу SSH GitHub на порту 443.
ssh -T -p 443 git@ssh.github.comПокажите настройку прокси в Git и свои переменные прокси.
git config --get http.proxy env | grep -i proxy
Как исправить
Если порт 22 заблокирован, используйте для GitHub SSH через порт 443. Добавьте этот блок в
~/.ssh/config.Host github.com Hostname ssh.github.com Port 443 User gitЕсли IPv6 не работает, используйте для этого хоста IPv4. Добавьте
AddressFamily inetв его блок в~/.ssh/config.Чтобы простаивающие сеансы не закрывались, отправляйте сообщение каждые 60 секунд. Добавьте
ServerAliveInterval 60в блок хоста.Чтобы избежать долгого ожидания, добавьте
ConnectTimeout 10в блок хоста.Для удалённых репозиториев по HTTPS за прокси задайте прокси для Git.
git config --global http.proxy http://proxy.example.com:8080Для проверки используйте URL репозитория по HTTPS вместо URL по SSH.
С Kilobat
Проверка подключения Kilobat проверяет IPv4 и IPv6 по отдельности, так что про неработающий путь IPv6 вы получите ясный ответ.
kilobat why github.comПосмотрите открытые подключения одного процесса.
kilobat destinations --pid 12345
Вопросы
Почему ssh -4 работает, а обычный ssh — нет?
Mac сначала попробовал IPv6, а путь IPv6 не работает. С -4 ssh использует только IPv4.
Что делает ServerAliveInterval?
ssh отправляет сообщение через подключение, если за указанное число секунд не было данных. По умолчанию 0 — сообщения не отправляются.
Источники
- GitHub Docs: Using SSH over the HTTPS port
- ssh(1) и ssh_config(5), страница man из macOS 27.2
- nc(1), страница man из macOS 27.2
- git-config(1), http.proxy, man-страница в составе macOS 27.2 (Git 2.56)
Источники проверены 29 октября 2026 г. Man-страницы — те, что установлены вместе с macOS; откройте любую командой man <name> в Терминале.