/엔지니어/트러블슈팅/SSH 접속 안 될 때 — Connection re
트러블슈팅초급UbuntuDebianCentOSRHELSSHConnection refusedPermission denied

SSH 접속 안 될 때 — Connection refused · Permission denied 원인별 완전 해결

ssh: connect to host port 22: Connection refused, Permission denied (publickey) 등 SSH 접속 오류 유형별 원인을 빠르게 특정하고 해결하는 트러블슈팅 가이드.

SSH 접속이 안 될 때 나오는 오류는 크게 세 가지입니다. 오류 메시지를 먼저 확인하면 원인을 빠르게 좁힐 수 있습니다.

오류 메시지원인
Connection refusedSSH 데몬 미실행 또는 방화벽이 포트 차단
Connection timed out방화벽이 패킷 자체를 드롭 (응답 없음)
Permission denied (publickey)키 불일치, authorized_keys 권한 문제
Host key verification failed서버 fingerprint 변경 (재설치 등)

1. Connection refused — SSH 데몬 확인

Bash
# 서버에 다른 방법으로 접근 후 실행 (콘솔/VNC)
sudo systemctl status ssh        # Ubuntu/Debian
sudo systemctl status sshd       # CentOS/RHEL

# 중지 상태라면 시작
sudo systemctl start ssh
sudo systemctl enable ssh

# 실제 리스닝 포트 확인
sudo ss -tlnp | grep ssh
# 예상 출력: LISTEN  0  128  0.0.0.0:22  ...

SSH 데몬이 실행 중인데 refused가 뜬다면 포트가 22가 아닐 수 있습니다. sudo sshd -T | grep port 로 실제 포트를 확인하세요.


2. Connection refused / timed out — 방화벽 확인

Bash
# UFW (Ubuntu 기본)
sudo ufw status
# SSH 허용 안 되어 있으면
sudo ufw allow ssh    # 22번 포트

# firewalld (CentOS/RHEL)
sudo firewall-cmd --list-services
sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload

# iptables 직접 확인
sudo iptables -L INPUT -n | grep 22

클라우드 보안 그룹 확인

AWS, GCP, Azure 사용 중이라면 인스턴스 보안 그룹/방화벽 규칙에서 인바운드 TCP 22번이 열려 있는지 확인하세요. OS 방화벽보다 클라우드 레벨 규칙이 먼저 적용됩니다.

Bash
# 내 공인 IP 확인 (보안 그룹에 등록할 때)
curl -s ifconfig.me

3. Permission denied (publickey) — 키 인증 실패

원인 1: 잘못된 키 파일 지정

Bash
# -i 로 키 파일 명시
ssh -i ~/.ssh/id_ed25519 user@서버IP

# 어떤 키를 시도하는지 verbose로 확인
ssh -vvv user@서버IP 2>&1 | grep "Offering|Trying|identity"

원인 2: authorized_keys 권한 문제

Bash
# 서버에서 실행
ls -la ~/.ssh/
# .ssh 디렉터리: 700, authorized_keys: 600 이어야 함

# 잘못된 경우 수정
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# 소유자 확인 (root 소유면 안 됨)
ls -la ~/.ssh/authorized_keys
# 올바른 예: -rw------- 1 deploy deploy ...

원인 3: 공개키가 등록되지 않음

Bash
# 내 공개키 확인
cat ~/.ssh/id_ed25519.pub

# 서버의 authorized_keys 확인
cat ~/.ssh/authorized_keys

# 공개키 등록
echo "공개키_한줄_전체" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

원인 4: sshd_config 에서 키 인증 비활성화

Bash
sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config
# PubkeyAuthentication yes 이어야 함

# 설정 변경 후 반드시 재시작
sudo systemctl reload ssh

4. Host key verification failed — fingerprint 불일치

서버를 재설치하거나 IP가 재할당되면 나타납니다.

Bash
# 에러 메시지
# WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

# known_hosts 에서 해당 항목 삭제
ssh-keygen -R 서버IP

# 또는 특정 라인만 삭제
ssh-keygen -R [서버IP]:22

# 이후 재접속 시 yes 입력
ssh user@서버IP

정말 재설치한 서버가 맞다면 안전합니다. 그러나 예상치 못한 fingerprint 변경은 MITM 공격 가능성이 있으므로 확인 후 삭제하세요.


5. 빠른 진단 체크리스트

Bash
# 로컬에서 실행 — 순서대로 확인
ssh -v user@서버IP 2>&1 | head -30   # verbose 로그
telnet 서버IP 22                       # 포트 연결 테스트
curl -v telnet://서버IP:22             # telnet 없을 때 대안
nc -zv 서버IP 22                       # netcat 포트 확인
Bash
# 서버에서 실행 (콘솔 접근 가능한 경우)
sudo systemctl is-active ssh           # 데몬 상태
sudo ss -tlnp | grep :22               # 포트 리스닝
sudo ufw status                        # 방화벽
sudo tail -20 /var/log/auth.log        # 인증 로그 (Ubuntu)
sudo tail -20 /var/log/secure          # 인증 로그 (CentOS)

정리

증상확인 순서
Connection refused① SSH 데몬 실행 → ② OS 방화벽 → ③ 클라우드 보안 그룹
Connection timed out① 클라우드 보안 그룹 → ② OS 방화벽 (DROP 규칙)
Permission denied (publickey)① 키 파일 경로 → ② .ssh 권한 → ③ authorized_keys 등록 → ④ sshd_config
Host key failedssh-keygen -R 서버IP 후 재접속

자주 묻는 질문 (FAQ)

Q. SSH connection refused와 timed out은 어떻게 다른가요? A. refused는 서버까지 패킷은 도달했지만 22번 포트에서 거절된 것(=SSH 데몬 미실행 또는 포트 차단)이고, timed out은 패킷이 아예 도달하지 못한 것(=방화벽/보안그룹 DROP 또는 잘못된 IP)입니다. refused면 데몬·OS 방화벽을, timed out이면 클라우드 보안 그룹을 먼저 확인하세요.

Q. 데몬은 켜져 있는데 계속 connection refused가 납니다. A. 포트가 22가 아니거나(sshd_configPort), sshd가 특정 IP에만 바인딩(ListenAddress)됐을 수 있습니다. 서버에서 sudo ss -tlnp | grep sshd로 실제 리스닝 주소·포트를 확인하세요.

#SSH#Connection refused#Permission denied#트러블슈팅#포트22#방화벽
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.