1. 문제 정의
Git을 사용해 git push
또는 git pull
명령을 실행할 때 다음 오류가 발생하는 경우가 있습니다:
ssh: connect to host github.com port 22: Connection timed out
이 오류는 주로 네트워크 설정, 방화벽, 또는 프록시 문제로 인해 발생하며, SSH 연결이 차단된 상황에서 나타납니다.
2. 원인 분석
2.1 포트 22 차단
많은 네트워크 방화벽이 SSH 연결(기본 포트 22)을 제한합니다. 이로 인해 GitHub와의 통신이 차단됩니다.
2.2 프록시 설정 문제
프록시 서버를 사용하는 네트워크에서 SSH 설정이 적절하지 않을 경우 문제가 발생할 수 있습니다.
2.3 Git 설정 문제
SSH URL 형식(git@github.com:username/repo.git
)이 잘못 설정되었거나, HTTPS를 사용할 때 SSL 인증서 문제가 있을 수 있습니다.
3. 해결 방법
3.1 포트를 443으로 변경
SSH 기본 포트(22) 대신 HTTPS 포트(443)를 사용해 연결을 시도합니다.
- SSH 설정 파일을 편집합니다:
nano ~/.ssh/config
- 아래 내용을 추가합니다:
Host github.com
Hostname ssh.github.com
Port 443
- 변경 사항을 저장한 후 SSH 연결을 테스트합니다:
ssh -T git@github.com
이 방법은 대부분의 방화벽에서 허용되는 HTTPS 포트를 사용하므로 효과적입니다.
3.2 HTTPS로 URL 변경
SSH 대신 HTTPS를 사용하도록 Git 원격 URL을 변경합니다.
- 현재 설정된 URL 확인:
git remote -v
- URL을 HTTPS 형식으로 변경:
git remote set-url origin https://github.com/username/repo.git
- 변경된 URL로 Git 명령 실행:
git pull
git push
3.3 프록시를 사용하는 경우
프록시 네트워크에서 Git을 사용하는 경우 ProxyCommand
를 추가해 문제를 해결할 수 있습니다.
- SSH 설정 파일에 프록시 명령 추가:
nano ~/.ssh/config
- 아래 내용을 추가:
Host github.com
Hostname ssh.github.com
ProxyCommand nc -X connect -x <프록시_주소>:<포트> %h %p
Port 443
User git
- 변경 사항 저장 후 테스트:
ssh -T git@github.com
3.4 DNS 문제 해결
로컬 DNS 설정이 원인일 경우 Cloudflare의 DNS(1.1.1.1) 또는 Google DNS(8.8.8.8)로 변경합니다.
/etc/resolv.conf
파일 편집:
sudo nano /etc/resolv.conf
- 아래 DNS 서버 추가:
nameserver 1.1.1.1
nameserver 8.8.8.8
- 네트워크 재시작:
sudo systemctl restart network-manager
4. 추가 팁
- GitHub의 상태를 확인하려면 GitHub Status 페이지를 방문하세요.
- 모바일 핫스팟 연결을 통해 네트워크 문제를 일시적으로 우회할 수도 있습니다.
5. 결론
"ssh: connect to host github.com port 22: Connection timed out" 문제는 네트워크 및 설정에 따라 다양한 원인을 가질 수 있습니다. 위 가이드를 참고하여 적합한 해결 방법을 적용하세요.
이제 GitHub와의 연결 문제 없이 효율적으로 작업을 진행할 수 있습니다!
Reference
How to fix "ssh: connect to host github.com port 22: Connection timed out" for git push/pull/... commands?
I am under a proxy and I am pushing in to git successfully for quite a while. Now I am not able to push into git all of a sudden. I have set the RSA key and the proxy and double checked them, with no
stackoverflow.com