SSH 연결 거부 오류 해결 | SSH Connection Refused 포트 문제로 서버 접속이 안 되어 답답하셨죠? 원인 파악부터 확실한 해결 방법까지, 막막했던 부분을 시원하게 뚫어드리겠습니다.
인터넷 정보는 너무 방대하고, 각자 해결책이 달라 오히려 더 헷갈리셨을 거예요. 잘못된 시도로 더 큰 문제를 만들까 봐 걱정되셨다면 잘 찾아오셨습니다.
이 글에서는 실제 많은 분들이 겪는 오류 상황들을 분석하고, 가장 효과적인 해결책들만 엄선하여 단계별로 안내해 드립니다. 이제 서버 접속 재시도, 어렵지 않아요!
SSH 연결 거부 원인과 증상
SSH 연결 시 ‘Connection refused’ 오류는 흔하게 발생하는 문제입니다. 이는 마치 특정 문(포트)이 굳게 닫혀 있어 들어갈 수 없는 상황과 같습니다.
주로 SSH 서비스가 실행되지 않거나, 방화벽 설정으로 인해 접근이 차단될 때 발생합니다. 예를 들어, Ubuntu 서버에서 SSH 서비스를 시작하지 않은 경우(sudo systemctl status sshd 확인) 또는 AWS EC2 보안 그룹에서 SSH 포트(기본 22번)를 허용하지 않은 경우 이런 오류를 마주하게 됩니다.
SSH 연결 거부 오류는 여러 가지 이유로 발생할 수 있습니다. 가장 흔한 원인으로는 SSH 데몬(sshd)이 실행되지 않거나, 방화벽에서 SSH 포트(일반적으로 22번)가 닫혀 있는 경우입니다.
이러한 문제는 SSH 클라이언트 프로그램(예: PuTTY, OpenSSH)에서 “Connection refused”라는 메시지로 나타나며, 서버에 접속이 불가능한 증상을 보입니다.
첫째, SSH 서비스가 정상적으로 실행 중인지 확인해야 합니다. Linux 환경에서는 sudo systemctl status ssh 또는 sudo service ssh status 명령어로 확인할 수 있습니다. 만약 비활성화 상태라면 sudo systemctl start ssh 또는 sudo service ssh start 명령어로 실행해야 합니다.
둘째, 방화벽 설정을 점검해야 합니다. Ubuntu의 경우 sudo ufw status 명령어로 방화벽 상태를 확인하고, SSH 포트(22번)가 허용되지 않았다면 sudo ufw allow ssh 명령어로 규칙을 추가할 수 있습니다.
| 점검 항목 | 확인 명령어/방법 | 해결 조치 |
| SSH 서비스 상태 | sudo systemctl status ssh | sudo systemctl start ssh |
| 방화벽 (UFW) | sudo ufw status | sudo ufw allow ssh |
| SSH 포트 설정 | /etc/ssh/sshd_config 파일 내 Port 설정 | 필요시 Port 번호 변경 및 sshd 재시작 |
SSH 서버의 설정 파일인 /etc/ssh/sshd_config에서 ‘Port’ 지시어에 지정된 포트 번호가 실제로 방화벽에서 허용되어 있는지 확인하는 것도 중요합니다. 만약 포트 번호를 변경했다면, 해당 포트 번호로 접속을 시도해야 합니다.
또한, 클라이언트와 서버 간의 네트워크 연결 자체에 문제가 없는지도 간단히 확인해보는 것이 좋습니다. 핑(ping) 테스트 등을 통해 기본적인 통신이 가능한지 살펴보세요.
참고: 특정 IP 주소만 SSH 접속을 허용하는 경우, 해당 IP 대역이 올바르게 설정되었는지도 확인해야 합니다.
포트 확인 및 방화벽 설정 방법
SSH 연결 거부 오류는 흔히 발생하지만, 포트 확인과 방화벽 설정이라는 핵심만 파악하면 신속하게 해결할 수 있습니다. 복잡해 보일 수 있으나, 단계별 접근으로 명확하게 이해할 수 있습니다.
가장 먼저 SSH 서비스가 실행되는 포트가 올바르게 설정되어 있는지 서버에서 직접 확인해야 합니다. 기본값은 22번 포트이지만, 보안상의 이유로 변경되었을 가능성이 있습니다.
서버에서 sudo netstat -tulnp | grep sshd 명령어로 현재 SSH 데몬의 포트 번호를 확인할 수 있습니다. 만약 예상과 다른 포트라면, SSH 설정 파일(sshd_config)을 수정하고 서비스 재시작이 필요합니다. 일반적으로 설정 파일은 /etc/ssh/sshd_config에 위치합니다.
서버 포트가 정상임에도 연결이 거부된다면, 서버의 방화벽 설정이 SSH 연결을 차단하고 있을 가능성이 높습니다. UFW, iptables 등 사용 중인 방화벽 솔루션에 따라 설정 방법이 달라집니다.
UFW를 사용한다면, sudo ufw allow ssh 또는 sudo ufw allow [포트번호]/tcp 명령으로 해당 포트를 허용해야 합니다. iptables의 경우 iptables -A INPUT -p tcp –dport [포트번호] -j ACCEPT와 같은 명령으로 규칙을 추가해야 합니다. 변경 후에는 방화벽 설정을 다시 로드하거나 재시작하여 적용하는 것을 잊지 마세요. 이 과정을 통해 SSH Connection Refused 문제를 효과적으로 해결할 수 있습니다.
- IP 주소 접근 제한: 특정 IP 주소나 대역만 SSH 접속을 허용하도록 방화벽 규칙을 세밀하게 설정하여 보안을 강화할 수 있습니다.
- 서비스 상태 확인: sudo systemctl status sshd 명령으로 SSH 서비스가 활성화 상태인지 다시 한번 확인하는 것이 중요합니다.
SSH 서비스 재시작 및 방화벽 통과
SSH 연결 거부 오류 발생 시, SSH 서비스 재시작 및 방화벽 설정을 통해 문제를 해결할 수 있습니다. 각 단계별로 자세한 실행 방법을 안내합니다.
먼저, SSH 서비스가 제대로 실행되고 있는지 확인하고 필요하다면 재시작해야 합니다. Ubuntu/Debian 계열에서는 systemctl 명령어를 사용합니다.
터미널에서 sudo systemctl restart sshd 명령을 실행하면 SSH 서비스가 재시작됩니다. 이 과정은 보통 1분 이내로 완료됩니다.
| 단계 | 실행 명령어 | 소요시간 | 확인사항 |
| 1단계 | sudo systemctl status sshd | 30초 | 서비스 ‘active (running)’ 상태인지 확인 |
| 2단계 | sudo systemctl restart sshd | 1분 | 재시작 후 다시 status 확인 |
SSH 서비스 재시작 후에도 연결이 안 된다면, 방화벽에서 SSH 포트(기본값 22)가 차단되었을 가능성이 높습니다. UFW 방화벽을 사용하는 경우, 다음 명령어로 SSH 포트를 허용해야 합니다.
sudo ufw allow ssh 명령어를 실행하면 SSH 포트가 방화벽 규칙에 추가됩니다. 변경 사항 적용 후 다시 SSH 연결을 시도해보세요.
팁: 만약 다른 포트를 사용 중이라면, sudo ufw allow [포트번호]/tcp와 같이 정확한 포트 번호를 지정해야 합니다.
- ✓ SSH 서비스: systemctl status sshd로 상태 확인 필수
- ✓ 방화벽 규칙: ufw allow ssh 또는 ufw allow [포트번호]/tcp 실행
- ✓ 포트 번호: SSH 기본 포트는 22번이지만, 변경될 수 있으니 확인 필요
- ✓ 최종 테스트: 모든 설정 변경 후 SSH 연결 재시도
SSH 연결 거부 오류는 대부분 SSH 서비스 자체의 문제이거나 네트워크 방화벽 설정으로 인해 발생합니다. 위에서 안내한 SSH 서비스 재시작과 방화벽 포트 통과 설정으로 대부분 해결 가능합니다.
접속 실패 시 추가 점검 사항
SSH 연결 거부 오류 발생 시, 단순히 설정 문제 외에도 놓치기 쉬운 몇 가지 함정들이 있습니다. 미리 파악하면 시간과 노력을 절약할 수 있습니다.
SSH 연결 거부 오류의 가장 흔한 원인 중 하나는 방화벽 설정입니다. 하지만 단순히 서버 방화벽만 확인해서는 안 됩니다. 클라이언트 측 방화벽이나 사용 중인 클라우드 환경의 보안 그룹 설정을 반드시 점검해야 합니다.
예를 들어, AWS EC2 인스턴스에 접속하려 할 때 보안 그룹에서 SSH 포트(기본 22번)에 대한 인바운드 규칙이 열려 있지 않으면 ‘Connection Refused’ 오류가 발생합니다. IP 주소 범위를 ‘0.0.0.0/0’으로 설정하면 누구나 접속 가능해 보안상 취약해지므로, 특정 IP 주소나 대역으로 제한하는 것이 안전합니다.
SSH 서버 프로그램인 ‘sshd’ 데몬이 정상적으로 실행 중인지 확인하는 것이 중요합니다. 간혹 서버 재부팅 후 서비스가 자동으로 시작되지 않거나, 예기치 못한 오류로 중지되는 경우가 있습니다.
리눅스 시스템에서는 sudo systemctl status sshd 명령어로 상태를 확인할 수 있습니다. 만약 비활성화 상태라면 sudo systemctl enable sshd로 활성화하고, sudo systemctl start sshd로 서비스를 시작해야 합니다. SSH 연결 거부 오류 해결의 기본적인 첫걸음입니다.
- 잘못된 포트 번호: SSH 서비스가 22번이 아닌 다른 포트에서 실행 중일 수 있습니다. 서버 설정 파일 (sshd_config)에서 Port 값을 확인하세요.
- SSH 키 문제: 접속하려는 사용자의 SSH 공개 키가 서버의 authorized_keys 파일에 올바르게 등록되지 않은 경우에도 연결이 거부될 수 있습니다.
- hosts.allow 및 hosts.deny: TCP Wrappers 설정을 사용하는 경우, /etc/hosts.allow 및 /etc/hosts.deny 파일에서 SSH 접속이 허용되어 있는지 확인해야 합니다.
안전한 SSH 연결을 위한 팁
SSH 연결 거부 오류는 다양한 원인으로 발생할 수 있으며, 특히 포트 관련 문제는 보안 설정과 직결됩니다. 일반적인 해결책을 넘어, 전문가 수준의 심층적인 점검과 예방 방안을 통해 안전하고 안정적인 SSH 환경을 구축하는 것이 중요합니다.
SSH 연결 거부 오류 해결의 핵심은 단순히 포트 개방을 넘어, 시스템의 전반적인 보안 상태를 점검하는 것입니다. 방화벽 규칙을 정밀하게 설정하고, 불필요한 포트 서비스는 비활성화하여 공격 표면을 최소화해야 합니다.
또한, SSH 데몬 설정 파일(sshd_config)에서 AllowUsers 또는 AllowGroups 옵션을 활용하여 특정 사용자만 SSH 접속을 허용하는 정책을 적용하면 더욱 안전합니다. 이는 무단 접근을 원천적으로 차단하는 효과적인 방법입니다.
표준 SSH 포트인 22번 외에 다른 포트 번호로 변경하는 것은 무작위적인 공격을 줄이는 데 도움이 될 수 있습니다. 하지만 이는 근본적인 해결책이 아니므로, 꼭 필요한 경우에만 적용하고, 변경한 포트 번호를 시스템 로그에 기록하여 관리해야 합니다.
궁극적으로는 SSH 프로토콜 자체를 최신 버전으로 유지하고, 가능하다면 SSHv2 이상의 보안 프로토콜을 사용하도록 설정하는 것이 좋습니다. 이는 데이터 전송 과정의 암호화 수준을 높여 전반적인 보안을 강화하는 결정적인 요소입니다.
전문가 팁: SSH 키 기반 인증만 사용하고 비밀번호 인증은 비활성화하는 것을 적극 권장합니다. 이는 무차별 대입 공격(Brute-force attack)으로부터 시스템을 보호하는 가장 강력한 방법 중 하나입니다.
- 로그 분석 심화: /var/log/auth.log 또는 유사한 로그 파일을 정기적으로 분석하여 의심스러운 접속 시도를 조기에 감지하세요.
- Fail2Ban 활용: 반복적인 로그인 실패 시 IP를 차단하는 Fail2Ban과 같은 도구를 설정하여 무차별 대입 공격을 효과적으로 방어할 수 있습니다.
- 서브넷 제한: 특정 IP 대역이나 서브넷만 SSH 접속을 허용하도록 방화벽 설정을 더욱 세분화하는 것을 고려해 보세요.
자주 묻는 질문
✅ SSH 연결 시 ‘Connection refused’ 오류가 발생하는 가장 흔한 두 가지 원인은 무엇인가요?
→ SSH 연결 거부 오류는 주로 SSH 서비스(sshd 데몬)가 실행되고 있지 않거나, 방화벽 설정으로 인해 SSH 포트(기본 22번) 접근이 차단될 때 발생합니다.
✅ Ubuntu 서버에서 SSH 서비스가 실행 중인지 확인하고, 비활성화 상태일 경우 어떻게 실행할 수 있나요?
→ Ubuntu 서버에서는 sudo systemctl status ssh 명령어로 SSH 서비스 상태를 확인할 수 있으며, 비활성화 상태라면 sudo systemctl start ssh 명령어로 실행할 수 있습니다.
✅ SSH 서버의 기본 포트 번호는 무엇이며, 포트 번호가 변경되었을 경우 접속 시 주의해야 할 점은 무엇인가요?
→ SSH 서버의 기본 포트 번호는 22번입니다. 만약 /etc/ssh/sshd_config 파일에서 포트 번호를 변경했다면, 변경된 해당 포트 번호로 접속을 시도해야 합니다.




