/보안/SSH Connection closed/reset by peer 5분 진단·복구 (fail2ban·MaxStartups)
보안SSH 접속 오류connection reset by peer

SSH Connection closed/reset by peer 5분 진단·복구 (fail2ban·MaxStartups)

비밀번호 입력 전 'Connection closed by remote host'·'reset by peer'로 끊긴다면 인증 전 차단입니다. ssh -vvv 로그로 fail2ban·hosts.deny·MaxStartups·방화벽 6가지 원인을 5분 진단하고 콘솔 시리얼로 자기 잠금까지 복구하세요.

SSH Connection closed/reset by peer 5분 진단·복구 (fail2ban·MaxStartups)

SSH 'Connection closed by remote host' & 'reset by peer' 5분 진단·복구

"비밀번호도 안 물어보고 끊겼다" — 인증 전 끊김이 보내는 신호

급한 마음에 서버에 접속하려는데 화면이 이렇게 뜹니다.

CODE
ssh_exchange_identification: Connection closed by remote host
# 또는
kex_exchange_identification: read: Connection reset by peer

여기서 가장 중요한 사실 하나. 이건 우리가 흔히 보는 Permission denied (publickey)Too many authentication failures완전히 다른 단계의 에러입니다.

에러 메시지끊긴 단계의미
Permission denied (publickey)인증 단계연결은 됐고 키/비번이 틀림
Too many authentication failures인증 단계키를 너무 많이 시도함
ssh_exchange_identification: Connection closed연결 핸드셰이크 단계인증 시도 전에 서버/네트워크가 끊음
Connection reset by peer핸드셰이크/배너 교환 단계상대가 TCP 세션을 강제로 끊음

즉 이 두 에러는 **"내가 인증을 시도하기도 전에 서버 혹은 중간 네트워크가 세션을 끊어버렸다"**는 신호입니다. 비밀번호 프롬프트조차 못 봤다면 키 문제를 아무리 뒤져도 답이 안 나옵니다. 방향을 차단·과부하·데몬·방화벽 쪽으로 돌려야 합니다.

공통 진단 도구: ssh -vvv 로그 한 줄로 방향 잡기

가장 먼저 verbose 로그를 찍어 어디서 멈췄는지 확인합니다.

Bash
ssh -vvv user@host

판독 포인트는 단 하나, 어느 줄 직후에 끊기느냐입니다.

  • debug1: Connecting to host [IP] port 22. 직후 멈춤 → TCP 연결 자체가 거부/리셋 (방화벽·hosts.deny·fail2ban ban 의심)
  • debug1: Connection established. 까지는 가는데 배너(Remote protocol version) 전에 끊김 → MaxStartups 드롭, SYN flood 보호, sshd 과부하 의심
  • 배너는 받았는데 SSH2_MSG_KEXINIT 전후로 끊김 → AllowUsers/DenyUsers 미스매치, sshd 비정상 의심

6가지 원인 진단 분기 표

증상 / -vvv 로그 위치의심 원인서버 측 검증 명령어복구 명령어
Connecting to... 직후 reset, 특정 IP만① fail2ban banfail2ban-client status sshdfail2ban-client set sshd unbanip <IP>
Connecting to... 직후 closed② TCP Wrappers 거부grep -nE 'ssh|sshd' /etc/hosts.deny /etc/hosts.allowhosts.deny에서 해당 줄 삭제/수정
동시 접속 폭주 시에만 closed③ MaxStartups 초과sshd -T | grep -i maxstartupsMaxStartups 값 상향 후 reload
배너 받은 뒤 closed, 특정 계정만④ Allow/Deny 미스매치sshd -T | grep -iE 'allowusers|denyusers|allowgroups'sshd_config 수정 후 reload
간헐적/재부팅 후 잠깐만 동작⑤ sshd 데몬 비정상systemctl status sshd / journalctl -u sshd -n 50systemctl restart sshd
특정 망에서만 timeout/reset⑥ 방화벽·보안그룹·SYN floodiptables -L -n --line-numbers | grep 22포트 22 허용 / 보안그룹 IP 추가

클라이언트에서 못 풀면 미루지 말고 클라우드 콘솔의 시리얼 접속으로 넘어가세요. SSH가 막힌 상태에서 SSH로 들어가려는 무한 루프를 피하는 게 핵심입니다.

원인 1~3: 차단·과부하 계열

① fail2ban / sshd 자동 차단으로 내 IP가 ban

클라우드 서버에 fail2ban이 기본 적용되는 경우가 늘면서, 정상 사용자가 키 몇 번 잘못 넣고 스스로 차단되는 사례가 급증했습니다.

Bash
fail2ban-client status sshd
iptables -L -n --line-numbers | grep <IP>
fail2ban-client set sshd unbanip <IP>

Banned IP list에 내 공인 IP가 있으면 정답입니다. (fail2ban이 동작 자체를 안 하는 별도 이슈는 'fail2ban 차단 안 됨' 트러블슈팅 글을 참고하세요.)

② TCP Wrappers 거부 (hosts.deny)

오래된 운영 서버나 보안 템플릿에서 자주 나옵니다.

Bash
grep -nE 'ssh|sshd' /etc/hosts.deny /etc/hosts.allow

/etc/hosts.denysshd: ALL 또는 특정 대역이 있으면 해당 줄을 주석 처리하거나, /etc/hosts.allow에 내 IP를 먼저 등록합니다(allow가 deny보다 우선).

③ MaxStartups·MaxSessions 초과로 드롭

IaC·CI/CD·Ansible 환경에서 동시 SSH 연결이 폭주하면 인증 전 세션이 무작위로 드롭됩니다. 이게 요즘 부쩍 늘어난 케이스입니다.

Bash
sshd -T | grep -i maxstartups
# 예: maxstartups 10:30:100  (10개 넘으면 30% 확률 드롭, 100개에서 전부 거부)

동시 작업이 많다면 sshd_configMaxStartups 30:50:200 처럼 상향하고 systemctl reload sshd.

원인 4~6: 설정·데몬·방화벽 계열

④ AllowUsers / DenyUsers / AllowGroups 미스매치

배너까지는 받는데 특정 계정만 끊긴다면 접근 제어 설정을 봅니다.

Bash
sshd -T | grep -iE 'allowusers|denyusers|allowgroups'

내 계정이 AllowUsers에 빠져 있거나 DenyUsers/그룹에 걸렸다면 수정 후 reload 합니다.

⑤ sshd 데몬 비정상

설정 오타로 reload가 실패했거나 데몬이 죽기 직전이면 간헐적으로 끊깁니다.

Bash
systemctl status sshd
journalctl -u sshd -n 50 --no-pager
sshd -t              # 설정 문법 검사
systemctl restart sshd

sshd -t로 문법을 먼저 검사한 뒤 재시작하는 습관을 들이면 self-lockout을 크게 줄일 수 있습니다.

⑥ 방화벽 / 보안그룹 / SYN flood 보호

"로컬에선 되는데 회사망에서만 안 된다"면 거의 IP 기반 차단입니다.

Bash
iptables -L -n --line-numbers | grep 22
ufw status numbered

AWS는 보안 그룹 인바운드 22번에 현재 공인 IP가 있는지, GCP는 VPC 방화벽 규칙을 확인합니다. 커널 SYN flood 보호(net.ipv4.tcp_syncookies)나 클라우드 DDoS 보호가 정상 트래픽을 일시 차단하는 경우도 있습니다.

자기 잠금(self-lockout) 복구 — 콘솔 시리얼 접속

이제 콘솔 시리얼 접속은 사실상 표준 복구 수단입니다. SSH가 완전히 막혔어도 들어갈 수 있습니다.

AWS EC2 Serial Console

  1. EC2 콘솔 → 인스턴스 선택 → Connect → EC2 Serial Console
  2. (사전: 계정 설정에서 Serial Console 활성화 + 인스턴스에 OS 로그인 비밀번호 설정 필요, Nitro 기반)
  3. 접속 후 OS 계정으로 로그인 → 위 명령으로 fail2ban unban / hosts.deny 수정 / 방화벽 해제

GCP Serial Console

  1. Compute Engine → VM 인스턴스 → 연결 → 직렬 콘솔에 연결
  2. 메타데이터에 serial-port-enable=true 설정 및 직렬 콘솔 비밀번호 로그인 활성화
  3. 로그인 후 차단 규칙 해제

실무 한 마디

직접 겪은 일인데, Ansible로 50대 서버에 동시 배포를 돌리다 점프 호스트가 Connection reset by peer를 뱉기 시작한 적이 있습니다. 원인은 fail2ban도 방화벽도 아닌 MaxStartups 10:30:100이었죠. 동시 핸드셰이크가 10개를 넘자 30% 확률로 조용히 드롭된 겁니다. 로그에 에러가 거의 안 남아 한참 헤맸는데, **"인증 전 끊김 = 차단 또는 과부하"**라는 원칙으로 접근하자 5분 만에 잡혔습니다. 자동화 환경이라면 MaxStartups 점검을 체크리스트 1순위에 두세요.

5분 체크리스트

  1. ssh -vvv user@host → 어디서 멈추는지 확인
  2. Connecting... 직후 reset → fail2ban-client status sshd → unban
  3. closed면 grep -nE 'ssh|sshd' /etc/hosts.deny /etc/hosts.allow
  4. 동시 접속 시에만 → sshd -T | grep -i maxstartups
  5. 특정 계정만 → sshd -T | grep -iE 'allowusers|denyusers|allowgroups'
  6. 간헐적 → journalctl -u sshd -n 50 --no-pagersystemctl restart sshd
  7. 특정 망만 → 방화벽·보안그룹 22번 IP 확인
  8. 다 막혔으면 → 콘솔 시리얼 접속으로 복구

재발 방지: fail2ban ignoreip에 관리 IP를 등록하고, 설정 변경 시 반드시 별도 SSH 세션을 하나 더 열어둔 채 작업하세요. 새 세션으로 접속 확인 전까지 기존 세션을 닫지 않는 게 self-lockout 최고의 예방책입니다.

자주 묻는 질문 (FAQ)

Q1. ping은 되는데 SSH만 끊깁니다. 네트워크 문제인가요? A. 아닙니다. ping(ICMP)이 된다는 건 호스트가 살아있다는 뜻일 뿐입니다. SSH만 끊기면 22번 포트에 대한 차단(fail2ban, hosts.deny, 방화벽/보안그룹) 또는 sshd 자체 문제입니다. ssh -vvv로 끊기는 지점부터 확인하세요.

Q2. 평소엔 되는데 동시에 여러 접속을 할 때만 끊깁니다. A. MaxStartups 드롭이 유력합니다. sshd -T | grep -i maxstartups로 임계값을 확인하고, CI/CD나 Ansible처럼 동시 연결이 많다면 값을 상향(MaxStartups 30:50:200)한 뒤 systemctl reload sshd 하세요.

Q3. 재부팅하면 잠깐 접속되다가 다시 끊깁니다. A. fail2ban이 부팅 후 로그를 다시 읽고 재차 ban하는 패턴입니다. fail2ban-client status sshd로 ban 여부를 확인하고, ignoreip에 관리 IP를 등록해 근본적으로 막으세요.

Q4. 집/모바일에선 되는데 회사망에서만 끊깁니다. A. IP 기반 차단입니다. 회사 공인 IP가 hosts.deny에 있거나, fail2ban에 ban됐거나, 클라우드 보안그룹/방화벽 22번 인바운드에서 빠진 경우입니다. 회사 공인 IP를 확인해 allow 목록·보안그룹에 추가하세요.

✦ ✦ ✦
편집 검토 · Editorial Review

이 글은 AI 에이전트가 1차 초안을 작성한 뒤, 사람 편집자가 사실관계·출처·톤과 맥락을 검토하여 발행했습니다. 오류나 부정확한 내용이 확인되면 24시간 이내에 정정합니다.

작성 · Content Reviewer·검토 · 사람 편집자·발행 · 2026년 6월 15일

댓글

불러오는 중...