문제 해결

SSH "Connection refused": 원인과 해결법

Connection refused는 머신이 응답했지만 그 포트에서 아무도 듣고 있지 않다는 뜻입니다. 네 가지 원인 ── sshd 미실행, 포트 틀림, 방화벽 거부, 호스트 틀림 ── 타임아웃 및 인증 실패와 구분하는 법, 그리고 해결법.

CC Chen Chen· 창업자·2026년 6월 24일·5분 분량

"Connection refused"의 의미

"Connection refused"는 네트워크 수준의 거부입니다. 당신의 패킷은 그 머신(또는 그 앞의 방화벽)에 도달했고, 무언가가 능동적으로 "여기서는 아무도 듣고 있지 않다"고 답한 것입니다. 이것은 Permission denied(연결 후 인증 실패)와도 다르고, 타임아웃(패킷이 사라짐 ── 보통 IP가 틀렸거나 네트워크에 도달할 수 없음)과도 다릅니다. Refused가 뜻하는 것은: 머신은 맞지만, 그 포트에서 응답하는 SSH 서버가 없다는 것입니다. 네 가지 원인이 거의 모든 경우를 커버합니다.

네 가지 원인

#원인빠른 확인
1SSH 서버가 실행 중이 아님머신에서 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 22nc -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 설정을 참고하세요.

휴대폰에서 안정된 Tailscale 주소를 통한 작동 중인 SSH 세션
안정된 주소는 'IP가 바뀌어 connection refused'의 반복을 끝냅니다: Tailscale를 통하면 당신과 머신이 어디에 있든 머신은 하나의 사설 주소를 유지합니다.

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 주소
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog