"Connection refused"의 의미
"Connection refused"는 네트워크 수준의 거부입니다. 당신의 패킷은 그 머신(또는 그 앞의 방화벽)에 도달했고, 무언가가 능동적으로 "여기서는 아무도 듣고 있지 않다"고 답한 것입니다. 이것은 Permission denied(연결 후 인증 실패)와도 다르고, 타임아웃(패킷이 사라짐 ── 보통 IP가 틀렸거나 네트워크에 도달할 수 없음)과도 다릅니다. Refused가 뜻하는 것은: 머신은 맞지만, 그 포트에서 응답하는 SSH 서버가 없다는 것입니다. 네 가지 원인이 거의 모든 경우를 커버합니다.
네 가지 원인
| # | 원인 | 빠른 확인 |
|---|---|---|
| 1 | SSH 서버가 실행 중이 아님 | 머신에서 systemctl status ssh |
| 2 | 포트가 틀림 | SSH가 22에서 옮겨졌나? 연결의 포트 확인 |
| 3 | 방화벽이 능동적으로 거부 | ufw status / 클라우드 보안 그룹 |
| 4 | 그 IP에 다른 머신이 있음 | IP가 바뀌었나(DHCP)? 맞는 머신인가? |
1 ── sshd가 정말 실행 중인가?
서버에서(콘솔, 웹 VNC, 또는 들어갈 수 있는 다른 어떤 방법으로든):
sudo systemctl status ssh # Debian/Ubuntu(RHEL 上是 sshd)
sudo systemctl enable --now ssh 새로 설치한 시스템이 전형적인 경우입니다: Raspberry Pi OS와 많은 최소 이미지는 출고 시 SSH가 비활성화되어 있습니다. 한 번 활성화하면 유지됩니다. Pi에서 SSH 활성화하기를 참고하세요.
2 ── 포트가 맞나?
관리자가 SSH를 22 포트에서 옮겼다면(흔한 노이즈 감소 조치), 22로 연결하면 거부됩니다. 연결 프로필의 포트 필드를 확인하거나, 다른 머신에서 탐색해 보세요: nc -vz host 22와 nc -vz host 2222를 비교합니다.
3 ── 방화벽이 거부 중
거부(드롭이 아닌)로 설정된 방화벽이 바로 이 오류를 만듭니다. 머신에서: sudo ufw status ── 당신의 SSH 포트가 허용되어 있나요? 클라우드 서버에서는 공급자 대시보드의 보안 그룹/방화벽 규칙도 확인하세요. 공급자 수준에서 22 포트가 닫힌 VPS는 OS가 패킷을 보기도 전에 거부합니다.
4 ── 그 주소에 다른 머신이 있음
가정 네트워크는 IP를 재할당합니다(DHCP). 저장한 연결이 192.168.1.42를 가리키는데 머신이 재부팅 후 .57이 되었다면, 22 포트를 거부하는 다른 기기에 연결하고 있을 수 있습니다. 라우터의 기기 목록을 다시 확인하거나 ── 아니면 Tailscale로 이런 종류의 문제를 통째로 우회하세요: LAN이 어떻게 바뀌든 각 머신은 안정된 사설 주소를 유지합니다. TermAI에 내장되어 있습니다. Tailscale SSH 설정을 참고하세요.
Refused vs 타임아웃 vs Permission denied
- Connection refused ── 머신은 도달 가능, 아무도 듣고 있지 않음(이 글).
- Connection timed out ── 패킷이 사라짐: IP가 틀림, 머신이 꺼짐, 또는 네트워크 밖에서 사설 주소에 연결하려 함(Tailscale를 사용).
- Permission denied ── SSH는 응답했고, 당신의 인증이 실패함: publickey 가이드 참고.
휴대폰에서 디버깅
이 오류가 모바일에서 곤란한 점은, 확인을 위해 정작 그 머신에 SSH로 들어갈 수 없는 경우가 많다는 것입니다. 같은 네트워크에 도달 가능한 다른 머신이 있다면, 그것을 거쳐 가세요: 그곳에 SSH로 들어간 다음, 거부된 머신을 nc -vz / ping해서 실제로 무슨 포트가 열려 있는지 봅니다. 진단 주문을 기억하지 못하겠다면, 상황을 TermAI 어시스턴트에게 설명하세요 ── "192.168.1.42의 22 포트에서 뭔가 듣고 있는지 확인해 줘" ── 그리고 당신이 연결되어 있는 머신에서 제안된 명령을 실행하세요.
자주 묻는 질문
SSH connection refused는 무엇 때문에 생기나요?
SSH 서버가 실행 중이 아님, SSH가 다른 포트에 있음, 방화벽이 그 포트를 거부함, 또는 그 IP에 다른 머신이 있음 중 하나입니다. 인증 실패가 아니라 네트워크 수준의 거부입니다.
connection timed out과는 어떻게 다른가요?
Refused = 머신이 "여기엔 아무것도 없다"고 답함. Timed out = 응답이 전혀 없음(IP가 틀림, 호스트가 다운, 또는 네트워크 도달 불가).
Raspberry Pi에서 connection refused를 어떻게 고치나요?
Raspberry Pi OS는 기본적으로 SSH가 비활성화되어 있습니다 ── raspi-config로 활성화하거나 boot 파티션에 ssh 파일을 두면 이후 유지됩니다.
핵심 요약
- 의미: 머신은 도달 가능, 그 포트에서 아무도 듣고 있지 않음(네트워크 수준, 인증 이전)
- 원인: sshd 미실행 · 포트 틀림 · 방화벽 거부 · 호스트 틀림/IP 변경
- 확인: 머신에서
systemctl status ssh; 외부에서nc -vz host port - IP 드리프트 방지: LAN의 DHCP IP 대신 안정된 Tailscale 주소
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.