안녕하세요. 일본서버 호스팅 전문 비전 IDC 기술팀입니다.
오늘은 Ubuntu 24.04에서 SSH 서비스가 시작되지 않거나 22번 포트가 정상적으로 열리지 않는 문제를 해결하는 방법을 알아보겠습니다. OpenSSH 설정 오류, 패키지 미설치, 호스트 키 문제, 포트 충돌, systemd 유닛 상태 이상 등 여러 원인으로 SSH 서비스 시작이 실패할 수 있습니다.
Ubuntu 24.04 LTS는 OpenSSH 서버에 systemd 소켓 활성화 방식을 기본으로 사용하므로, 이전 버전처럼 ssh.service 상태만 보고 장애 여부를 판단하면 혼동할 수 있습니다. 먼저 ssh.socket과 실제 수신 포트를 함께 확인한 뒤, 설정 문법과 로그를 순서대로 점검하는 것이 중요합니다.
적용 환경
| 항목 | 내용 |
|---|---|
| 운영체제 | Ubuntu 24.04 LTS |
| SSH 서버 | openssh-server |
| 주요 systemd 유닛 | ssh.socket, ssh.service |
| 기본 설정 파일 | /etc/ssh/sshd_config, /etc/ssh/sshd_config.d/*.conf |
| 기본 SSH 포트 | 22/tcp |
이 문서에서 알아볼 내용
- OpenSSH Server 설치 여부와 패키지 상태 확인
ssh.socket과ssh.service상태 구분sshd -t를 이용한 설정 문법 검사- SSH 서비스 시작 실패 로그 확인
- 호스트 키 누락과 포트 충돌 해결
- 설정 수정 후 정상 작동 및 외부 접속 확인
작업 전 준비사항
원격 서버에서 SSH가 이미 중단된 상태라면 호스팅 업체의 웹 콘솔, KVM, 시리얼 콘솔 또는 가상 머신 콘솔을 이용해 서버에 접속해야 합니다. SSH 설정을 수정하거나 서비스를 재시작하는 과정에서 현재 원격 세션이 끊길 수 있으므로 복구 경로를 먼저 확보하십시오.
설정을 수정하기 전에 현재 파일을 백업합니다.
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
추가 설정 파일을 사용하고 있다면 /etc/ssh/sshd_config.d/ 내부 파일도 함께 확인하십시오.
OpenSSH Server 설치 여부 확인
먼저 openssh-server 패키지가 설치되어 있는지 확인합니다. SSH 클라이언트만 설치된 경우에는 서버용 sshd를 시작할 수 없습니다.
dpkg -l openssh-server
command -v sshd
dpkg -l 결과에서 패키지 상태가 ii이고, command -v sshd에서 일반적으로 /usr/sbin/sshd가 확인되면 서버 패키지가 설치된 상태입니다.
패키지가 없다면 패키지 목록을 갱신한 뒤 OpenSSH Server를 설치합니다.
sudo apt update
sudo apt install -y openssh-server
설치 과정 자체가 실패한다면 먼저 APT 저장소 오류나 패키지 의존성 문제를 해결해야 합니다.
ssh.socket과 ssh.service 상태 확인
Ubuntu 24.04에서는 OpenSSH가 systemd 소켓 활성화를 기본으로 사용합니다. 따라서 ssh.service만 확인하지 말고 ssh.socket의 활성 상태와 실제 리스닝 포트를 함께 확인해야 합니다.
sudo systemctl status ssh.socket --no-pager
sudo systemctl status ssh.service --no-pager
systemctl is-active ssh.socket
systemctl is-enabled ssh.socket
소켓 활성화 환경에서는 ssh.socket이 active (listening) 상태이고 SSH 포트가 정상적으로 열려 있으면 연결 요청을 받을 수 있습니다. ssh.service의 상태만으로 SSH 전체 장애를 판단하지 마십시오.
현재 TCP 수신 포트를 확인합니다.
sudo ss -ltnp | grep ':22 '
SSH 포트를 변경한 환경에서는 22 대신 실제 설정 포트를 확인해야 합니다. 소켓 활성화 방식에서는 리스닝 프로세스가 sshd가 아니라 systemd로 표시될 수 있습니다.
SSH 설정 문법 검사
SSH 서비스가 시작되지 않을 때 가장 먼저 확인할 항목 중 하나는 설정 파일 문법입니다. OpenSSH 공식 도구인 sshd -t는 설정 파일뿐 아니라 호스트 키의 기본적인 정상 여부도 검사합니다.
sudo sshd -t
오류가 없다면 일반적으로 별도의 출력 없이 명령이 종료됩니다. 오류 메시지가 표시되면 해당 파일과 줄 번호 또는 잘못된 지시어를 먼저 수정해야 합니다.
적용되는 전체 SSH 설정을 확인하려면 다음 명령도 사용할 수 있습니다.
sudo sshd -T | less
특히 포트 관련 문제라면 적용된 포트만 확인합니다.
sudo sshd -T | grep '^port '
SSH 서비스 시작 실패 로그 확인
설정 검사가 정상인데도 시작되지 않는다면 systemd 저널에서 실패 원인을 확인합니다.
sudo journalctl -u ssh.service -b --no-pager -n 100
sudo journalctl -u ssh.socket -b --no-pager -n 100
실시간으로 SSH 서비스 로그를 확인하려면 다음 명령을 실행한 상태에서 다른 콘솔에서 서비스를 재시작합니다.
sudo journalctl -fu ssh.service
로그에서 설정 파일 오류, 호스트 키 읽기 실패, 주소 바인딩 실패, 포트 충돌과 같은 실제 원인을 확인한 뒤 해당 항목만 수정하는 것이 좋습니다.
SSH 호스트 키 확인
OpenSSH Server는 서버를 식별하기 위한 호스트 키를 사용합니다. 호스트 키 파일이 삭제되었거나 정상적으로 생성되지 않은 경우 sshd -t와 서비스 로그에서 관련 오류가 확인될 수 있습니다.
sudo ls -l /etc/ssh/ssh_host_*_key
sudo sshd -t
기본 호스트 키가 누락된 것이 확인되면 누락된 키를 생성합니다.
sudo ssh-keygen -A
sudo sshd -t
SSH 포트 충돌 확인
SSH가 사용하려는 포트를 다른 프로세스가 이미 사용하고 있으면 주소 바인딩에 실패할 수 있습니다. 먼저 실제 적용 포트를 확인합니다.
sudo sshd -T | grep '^port '
기본 22번 포트를 기준으로 현재 리스닝 프로세스를 확인합니다.
sudo ss -ltnp | grep ':22 '
Ubuntu 24.04의 기본 소켓 활성화 환경이라면 systemd가 해당 포트를 정상적으로 점유하고 있을 수 있으므로 이를 다른 프로그램과의 충돌로 오해하지 마십시오. ssh.socket이 아닌 별도 서비스가 같은 포트를 점유하고 있다면 해당 서비스의 포트 또는 SSH 포트를 조정해야 합니다.
서비스 복구 및 재시작
설정 오류와 호스트 키 문제를 수정했다면 다시 문법 검사를 실행합니다.
sudo sshd -t
검사가 정상이라면 SSH 서비스를 재시작합니다.
sudo systemctl restart ssh.service
소켓 유닛이 비활성화되어 있다면 활성화합니다.
sudo systemctl enable --now ssh.socket
SSH 포트나 ListenAddress처럼 소켓 리스닝에 영향을 주는 설정을 변경한 경우에는 systemd가 생성된 구성을 다시 읽도록 한 뒤 소켓을 재시작합니다.
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
정상 작동 확인
1. 설정 검사와 systemd 상태 확인
sudo sshd -t
systemctl is-active ssh.socket
sudo systemctl status ssh.socket --no-pager
sudo systemctl status ssh.service --no-pager
sshd -t에서 오류가 없고 ssh.socket이 정상적으로 리스닝 중인지 확인합니다.
2. 실제 SSH 포트 확인
sudo ss -ltnp | grep ':22 '
포트를 변경했다면 실제 포트 번호로 확인하십시오. 수신 대기 상태가 없다면 ssh.socket 로그와 적용된 Port, ListenAddress 값을 다시 점검합니다.
3. 로컬 연결 테스트
ssh -o ConnectTimeout=5 localhost
포트를 변경했다면 -p 옵션으로 실제 포트를 지정합니다. 로컬 연결은 정상인데 외부에서만 접속되지 않는다면 UFW, 상위 방화벽, NAT, 보안 그룹 또는 라우팅 문제를 별도로 확인해야 합니다.
4. 외부에서 새 SSH 접속 확인
기존 원격 세션을 유지한 상태에서 별도의 터미널을 열어 서버에 새로 접속합니다.
ssh [email protected]
새 세션에서 정상적으로 로그인되는 것을 확인한 뒤에만 기존 세션을 종료하십시오.
자주 발생하는 오류와 해결 방법
| 증상 | 가능한 원인 | 확인 방법 | 해결 방법 |
|---|---|---|---|
Unit ssh.service could not be found |
openssh-server 미설치 |
dpkg -l openssh-server |
sudo apt install openssh-server로 설치 |
sshd -t에서 설정 오류 출력 |
잘못된 sshd_config 지시어 또는 값 |
sudo sshd -t, /etc/ssh/sshd_config.d/ 확인 |
오류가 표시된 파일과 설정값을 수정한 뒤 다시 검사 |
| 호스트 키 관련 오류로 시작 실패 | 기본 SSH 호스트 키 누락 또는 읽기 실패 | ls -l /etc/ssh/ssh_host_*_key, sudo sshd -t |
누락된 키라면 sudo ssh-keygen -A 실행 후 재검사 |
| 포트 바인딩 실패 | 다른 프로세스가 SSH 포트를 사용하거나 잘못된 ListenAddress 지정 | sudo sshd -T, sudo ss -ltnp, journal 확인 |
충돌 포트 또는 주소 설정을 수정하고 소켓 구성 재적용 |
ssh.service가 예상과 다르게 보임 |
Ubuntu 24.04의 systemd 소켓 활성화 방식 | systemctl status ssh.socket, ss -ltnp |
ssh.socket 활성 상태와 실제 리스닝 포트를 기준으로 판단 |
| 서버 내부는 정상인데 외부 SSH 접속 실패 | UFW, 상위 방화벽, NAT 또는 라우팅 문제 | ss -ltnp, ufw status, 외부 접속 테스트 |
실제 SSH 포트를 방화벽에 허용하고 네트워크 경로 확인 |
패키지 파일 손상이 의심되는 경우
설정과 호스트 키가 정상인데도 패키지 파일 자체에 문제가 있다고 판단될 때는 설정 파일을 먼저 백업한 뒤 재설치를 검토할 수 있습니다.
sudo cp -a /etc/ssh /root/ssh-config-backup
sudo apt update
sudo apt install --reinstall openssh-server
재설치 후에도 무조건 설정을 덮어쓰지 말고 sudo sshd -t와 systemd 로그를 다시 확인하십시오.
공식 참고자료
- Canonical Ubuntu Server Documentation — OpenSSH server
공식 URL: https://ubuntu.com/server/docs/how-to/security/openssh-server/
확인 내용:openssh-server설치,/etc/ssh/sshd_config및sshd_config.d,sshd -t,systemctl restart ssh.service, SSH 서비스 로그 확인
조회일: 2026년 9월 26일 - Canonical Ubuntu 24.04 LTS Release Notes — OpenSSH
공식 URL: https://documentation.ubuntu.com/release-notes/24.04/
확인 내용: Ubuntu 24.04의 OpenSSH systemd socket activation과ssh.socket생성 방식, Ubuntu 24.04 LTS 지원 기간
조회일: 2026년 9월 26일 - Ubuntu Manpages 24.04 LTS — sshd_config(5)
공식 URL: https://manpages.ubuntu.com/manpages/noble/man5/sshd_config.5.html
확인 내용: OpenSSH 서버 설정 파일 위치, HostKey 기본 경로, 주요 설정 지시어 동작
조회일: 2026년 9월 26일 - Canonical Ubuntu Security Documentation — No open ports
공식 URL: https://documentation.ubuntu.com/security/security-features/network/open-ports/
확인 내용:ss를 이용한 수신 포트와 프로세스 확인 방법
조회일: 2026년 9월 26일
자주 묻는 질문
Ubuntu 24.04에서 ssh.service가 inactive이면 SSH가 고장 난 것인가요?
반드시 그렇지는 않습니다. Ubuntu 24.04는 systemd 소켓 활성화를 기본으로 사용하므로 ssh.socket이 정상적으로 포트를 리스닝하고 있는지도 함께 확인해야 합니다. systemctl status ssh.socket과 ss -ltnp 결과를 기준으로 판단하십시오.
SSH 설정을 수정했는데 서비스가 시작되지 않습니다.
먼저 sudo sshd -t를 실행하십시오. 오류가 표시되면 서비스를 반복해서 재시작하지 말고 /etc/ssh/sshd_config와 /etc/ssh/sshd_config.d/*.conf에서 해당 설정을 수정해야 합니다.
SSH 서비스는 정상인데 외부에서 접속되지 않습니다.
서버에서 실제 SSH 포트가 수신 대기 중인지 확인한 뒤 UFW와 호스팅 업체의 상위 방화벽, 보안 그룹, NAT와 라우팅 설정을 확인하십시오. 서버 로그에 외부 접속 시도가 전혀 남지 않는다면 SSH 프로세스보다 네트워크 경로 문제일 가능성을 먼저 점검하는 것이 좋습니다.
호스트 키가 없으면 다시 생성해도 되나요?
실제로 기본 호스트 키가 누락된 경우에는 sudo ssh-keygen -A로 누락된 키를 생성할 수 있습니다. 다만 기존 정상 호스트 키를 임의로 삭제하거나 교체하면 클라이언트에서 호스트 키 변경 경고가 발생하므로, 기존 키가 존재하는 환경에서는 원인을 먼저 확인하십시오.
마무리
오늘은 Ubuntu 24.04에서 SSH 서비스가 시작되지 않을 때 패키지 설치 여부, ssh.socket과 ssh.service, SSH 설정 문법, 호스트 키, 포트 충돌과 systemd 로그를 순서대로 확인하는 방법을 설명드렸습니다. 특히 Ubuntu 24.04에서는 소켓 활성화 구조를 이해하고 실제 수신 포트까지 함께 확인하는 것이 중요합니다.
원격 서버의 SSH 설정을 수정할 때는 sshd -t 검사를 거친 뒤 기존 세션을 유지한 상태에서 새 접속을 확인하십시오. 일본서버 호스팅을 포함한 해외 서버 환경에서는 상위 방화벽이나 네트워크 ACL도 함께 적용되는 경우가 있으므로 서버 내부 설정과 외부 네트워크 정책을 함께 점검하는 것이 좋습니다.
비전 IDC는 일본서버 호스팅 환경을 포함한 다양한 서버 운영 환경에서 안정적인 관리에 도움이 되는 기술정보를 지속적으로 제공하겠습니다.
