Haru Utils

REMOTE ACCESS

SSH 접속이 거부되거나 시간 초과될 때

클라이언트 오류, 서버 포트, ssh service·socket, 방화벽과 인증 로그를 분리해 원인을 좁힙니다.
SSH 접속 불가Connection timed outConnection refusedPermission denied publickeyssh.socket
환경Ubuntu 22.04·24.04·26.04 LTS · OpenSSH · systemd
분류네트워크
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • Connection timed out
  • Connection refused
  • Permission denied (publickey)
  • 배포 후 SSH 접속 불가

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

timeout

서버 도달 경로, 클라우드 보안 규칙, UFW와 목적지 포트를 먼저 확인합니다.

02

refused

주소에는 도달했지만 해당 포트가 LISTEN이 아니거나 즉시 거부되는 상황을 우선 확인합니다.

03

publickey 거부

네트워크 연결은 성립한 상태이므로 사용자명, 키 선택, authorized_keys 권한과 인증 로그를 확인합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

클라이언트에서 실패 지점 기록

USER와 example.com을 실제 값으로 바꾸고, 비밀번호나 개인키 내용을 출력에 포함하지 않습니다.

상세 연결 로그
ssh -vvv -o ConnectTimeout=10 USER@example.com
공유 전 사용자명·호스트·키 경로 등 민감정보를 가립니다.
결과 읽기

Connecting 이후 멈추면 경로·방화벽, Connection established 이후 실패하면 인증·키 문제 가능성이 큽니다.

다음 판단

timeout·refused·publickey 중 어느 분기인지 기록합니다.

2
조회시스템을 변경하지 않는 확인 단계

콘솔에서 SSH 포트와 unit 확인

기존 SSH 세션 또는 클라우드 콘솔을 유지한 채 서버 내부 상태를 확인합니다.

22번 포트 LISTEN
sudo ss -lntp | grep ':22 '
사용 포트가 다르면 실제 포트로 바꿉니다.
service와 socket 상태
systemctl status ssh.service ssh.socket --no-pager -l
Ubuntu 24.04는 socket activation 구성을 함께 확인합니다.
결과 읽기

LISTEN 주소가 127.0.0.1뿐이면 외부 접근이 안 됩니다. ssh.socket이 포트를 소유할 수도 있습니다.

다음 판단

포트가 없으면 unit 로그와 설정 문법을 확인하고, 포트가 있으면 방화벽으로 이동합니다.

3
조회시스템을 변경하지 않는 확인 단계

호스트 방화벽과 외부 규칙 분리

로컬 UFW 상태와 클라우드·IDC의 외부 방화벽은 별개입니다.

UFW 상태
sudo ufw status verbose
전체 열린 포트
sudo ss -utlnp
결과 읽기

UFW가 허용해도 클라우드 보안 그룹이나 네트워크 ACL이 막을 수 있습니다. 반대로 UFW inactive가 외부 허용을 의미하지 않습니다.

다음 판단

서버 포트와 외부 허용 포트가 일치하는지 관리 콘솔에서도 확인합니다.

4
조회시스템을 변경하지 않는 확인 단계

인증 로그와 설정을 변경 없이 검증

로그에서 사용자명·키 거부·설정 오류를 확인하고 문법 검사를 통과시킵니다.

OpenSSH 설정 문법
sudo sshd -t
최근 SSH 로그
sudo journalctl -u ssh.service -u ssh.socket -b -n 150 --no-pager
적용 설정 일부
sudo sshd -T | grep -E '^(port|listenaddress|passwordauthentication|pubkeyauthentication) '
결과 읽기

sshd -t가 출력 없이 종료 코드 0이면 문법상 유효합니다. Failed publickey와 invalid user는 인증 분기입니다.

다음 판단

설정 변경 전 원본과 drop-in 파일, 복구 콘솔 접근 수단을 확보합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

설정을 반영하고 두 번째 세션으로 검증

현재 SSH 세션을 닫지 말고 sshd -t 성공 후에만 reload합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
문법 재검증
sudo sshd -t
OpenSSH 재로딩
sudo systemctl reload ssh.service
새 터미널에서 재접속
ssh -o ConnectTimeout=10 USER@example.com
결과 읽기

새 세션이 성공하고 기존 세션도 유지돼야 합니다. 실패하면 기존 세션에서 설정을 되돌릴 수 있습니다.

다음 판단

두 번째 세션 검증 전에는 기존 접속을 종료하지 않습니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기