개발자
Mac에서 SSH와 Git 연결 시간 초과
SSH와 Git에는 서버에 대한 작동하는 TCP 연결이 필요합니다. 포트 22를 차단하는 네트워크, 손상된 IPv6 경로 또는 프록시가 이를 중단시킬 수 있습니다.
증상
git push또는git clone이(가) 대기하다가 “Operation timed out”을 표시합니다.ssh에서 한 네트워크에서는 “연결 시간이 초과되었습니다”가 표시되지만 다른 네트워크에서는 작동합니다.- 몇 분 동안 사용하지 않으면 SSH 세션이 멈춥니다.
- HTTPS Git 원격 저장소는 작동하지만 SSH 원격 저장소는 작동하지 않습니다.
가능한 원인
- 포트 22가 차단됨. 일부 회사, 호텔 및 공공 네트워크는 SSH를 차단합니다. GitHub에 따르면 방화벽이 SSH 연결을 거부하는 경우가 있습니다.
- IPv6 경로 문제. Mac은 IPv6을 먼저 시도합니다. IPv6이 작동하지 않으면 연결이 지연됩니다.
- 유휴 연결 종료. 라우터나 방화벽이 일정 시간 데이터를 보내지 않는 연결을 끊을 수 있습니다.
- 프록시가 필요합니다. 회사 네트워크에서 HTTPS Git을 사용하려면
http.proxy또는 프록시 변수가 필요할 수 있습니다.
확인 방법
상세 출력을 사용하여 연결하세요. 마지막 줄에 연결이 중단된 지점이 표시됩니다.
ssh -vT git@github.comTCP 포트만 5초 시간 제한으로 테스트합니다.
nc -vz -G 5 github.com 22IPv4만 사용해 보세요. 이때 작동하면 IPv6 경로에 문제가 있습니다.
ssh -4 -T git@github.com포트 443에서 GitHub SSH 서비스를 테스트합니다.
ssh -T -p 443 git@ssh.github.comGit 프록시 설정과 프록시 변수를 표시합니다.
git config --get http.proxy env | grep -i proxy
해결 방법
포트 22가 차단되어 있다면 GitHub에서 포트 443을 통한 SSH를 사용하세요.
~/.ssh/config에 이 블록을 추가합니다.Host github.com Hostname ssh.github.com Port 443 User gitIPv6가 실패하면 해당 호스트에 IPv4를 사용하세요.
~/.ssh/config의 해당 블록에AddressFamily inet을 추가하세요.유휴 세션을 유지하려면 60초마다 메시지를 보내세요. 호스트 블록에
ServerAliveInterval 60을 추가하세요.오래 기다리지 않으려면 호스트 블록에
ConnectTimeout 10을 추가하세요.프록시 뒤의 HTTPS 원격 저장소에는 Git 프록시를 설정하세요.
git config --global http.proxy http://proxy.example.com:8080테스트하려면 저장소의 SSH URL 대신 HTTPS URL을 사용하세요.
Kilobat 사용
Kilobat의 연결 검사는 IPv4와 IPv6을 별도로 테스트하므로 IPv6 경로에 문제가 있는지 명확히 알 수 있습니다.
kilobat why github.com한 프로세스의 열린 연결을 확인합니다.
kilobat destinations --pid 12345
질문
일반 ssh는 작동하지 않지만 ssh -4는 작동하는 이유는 무엇인가요?
Mac이 IPv6를 먼저 시도했지만 IPv6 경로가 작동하지 않았습니다. -4를 사용하면 ssh가 IPv4만 사용합니다.
ServerAliveInterval은 어떤 기능을 하나요?
ssh는 데이터가 없는 상태로 지정된 초가 지나면 연결을 통해 메시지를 보냅니다. 기본값은 0이며 메시지를 보내지 않습니다.
출처
- GitHub 문서: HTTPS 포트를 통한 SSH 사용하기
- ssh(1) 및 ssh_config(5), macOS 27.2와 함께 설치된 매뉴얼 페이지
- nc(1), macOS 27.2와 함께 설치된 매뉴얼 페이지
- git-config(1), http.proxy, macOS 27.2와 함께 설치된 매뉴얼 페이지 (Git 2.56)
2026년 10월 29일 확인했습니다.