포트 자체를 테스트하세요
ping 응답이 오거나 웹사이트가 정상적으로 작동한다고 해서 SSH 상태를 알 수 있는 것은 아닙니다. 각각 다른 프로토콜이나 포트를 사용하기 때문입니다. 클라이언트에서 TCP 포트를 직접 테스트하세요. Connection refused는 응답은 있었지만 연결을 받아들인 서비스가 없다는 뜻입니다. 시간 초과는 아무 응답도 없었다는 뜻으로, 보통 방화벽, 라우팅 또는 컴퓨터 과부하를 가리킵니다.
nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.exampleConnection refused: 콘솔에서 sshd 확인
SSH 대신 제공업체나 하이퍼바이저의 콘솔을 사용하세요. 서비스가 실행 중인지, 어떤 주소와 포트에서 수신하는지, 설정이 유효한지 확인합니다. 최근 Ubuntu 릴리스에서는 SSH가 ssh.socket을 통해 시작되므로 소켓 유닛도 확인하세요. 다른 배포판에서는 서비스 이름이 sshd일 수 있습니다.
sudo systemctl status ssh.service ssh.socket
sudo ss -lntp | grep -E ':22\b|sshd'
sudo sshd -t
sudo journalctl -u ssh -n 50 --no-pager시간 초과: 방화벽 확인
서버 방화벽과 함께 클라우드 보안 그룹, 라우터, 제공업체 관리 패널 등 서버 외부의 모든 필터도 확인하세요. 패킷이 도착하는지 알아보려면 연결을 시도하는 동안 서버에서 tcpdump를 실행합니다. 아무것도 나타나지 않으면 서버에 도착하기 전에 차단된 것입니다. 패킷은 도착하는데 응답이 나가지 않는다면 서버에서 원인을 찾으세요.
sudo ufw status verbose
sudo nft list ruleset | less
sudo tcpdump -ni any tcp port 22fail2ban 차단 또는 포트 변경
로그인 실패 후 fail2ban이 사용자의 주소를 차단했을 수 있습니다. 이 경우 해당 주소에서만 연결이 시간 초과되거나 거부되는 것처럼 보입니다. 다른 네트워크에서 테스트하면 이를 빠르게 확인할 수 있습니다. 또한 Port로 포트가 변경되었거나 ListenAddress로 수신 주소가 하나로 제한되었는지 확인하세요. 설정 위치는 sshd_config 또는 다음 디렉터리 아래의 파일입니다: /etc/ssh/sshd_config.d.
sudo fail2ban-client status sshd
sudo sshd -T | grep -E '^(port|listenaddress) '포트 연결은 되지만 로그인이 멈추는 경우
TCP 연결은 성공하지만 SSH 초기 식별 메시지가 전혀 도착하지 않는다면 sshd가 부분적으로만 동작하거나 시스템에 과부하가 걸린 것입니다. 콘솔에서 메모리, 디스크 공간, 부하를 확인하세요. 디스크가 가득 차거나 메모리가 고갈되면 기존 서비스는 계속 응답하더라도 새 세션을 시작하지 못할 수 있습니다.
uptime
free -h
df -hCH-J Server Manager로 확인하기
Server Diagnostics는 로그인 없이 IPv4와 IPv6에서 ping, TCP 연결, SSH 식별 문자열을 테스트하여 어느 단계에서 실패하는지 보여 줍니다. 테스트는 사용자의 컴퓨터에서만 수행됩니다. 서버 내부를 들여다보거나 어떤 방화벽이 패킷을 버렸는지 알아낼 수는 없으므로 위 점검에는 여전히 콘솔이 필요합니다.