서버를 처음 열어둘 때 가장 긴장되는 순간은 설치보다 SSH 설정을 바꾼 직후입니다. Rocky Linux 9에서 sshd_config의 포트만 바꾸고 재시작했다가 접속이 막히면 복구가 번거로워집니다. SSH 포트 변경은 단순히 숫자 하나를 바꾸는 작업이 아니라 sshd 설정, SELinux, firewalld 세 군데를 함께 맞추는 작업입니다.

먼저 끊지 말아야 할 것
Rocky Linux 9.x에서 작업할 때 가장 먼저 지켜야 할 것은 명령어 순서보다 현재 SSH 세션을 유지하는 것입니다. 설정을 바꾼 뒤 기존 터미널을 바로 닫으면, 새 포트 접속이 실패했을 때 되돌아갈 통로가 사라질 수 있습니다.
오라클 클라우드 같은 VPS 환경에서는 서버 내부의 firewalld만 열어서는 부족합니다. 콘솔의 Security List 인바운드 규칙에서도 새 SSH 포트를 허용해야 합니다. 집에서 운영하는 홈서버라면 공유기 포트포워딩도 함께 확인해야 합니다.
| 확인 항목 | 해야 할 일 |
|---|---|
| 기존 SSH 세션 | 닫지 않고 유지 |
| 새 터미널 | 변경 포트로 접속 테스트 |
| 클라우드 방화벽 | Security List 인바운드 허용 |
| 홈서버 공유기 | 포트포워딩 확인 |
| 비상 접속 | 콘솔, IPMI, 시리얼 콘솔 확보 |
1단계, sshd_config에서 포트 지정
예시는 2222 포트로 진행하겠습니다. 기본 설정 파일을 직접 수정해도 되고, Rocky Linux 9에서는 /etc/ssh/sshd_config.d/ 아래에 별도 설정 파일을 두는 방식도 사용할 수 있습니다.
기본 파일을 수정한다면 아래처럼 엽니다.
sudo vi /etc/ssh/sshd_config
그리고 Port 값을 지정합니다.
Port 2222
drop-in 방식으로 관리하고 싶다면 별도 파일을 만들어도 됩니다.
sudo vi /etc/ssh/sshd_config.d/10-custom-port.conf
Port 2222
여기까지만 하고 sshd를 재시작하면 접속이 막힐 수 있습니다. Rocky Linux 계열에서는 SELinux가 해당 포트를 SSH용 포트로 허용하는지를 따로 확인해야 합니다.
2단계, SELinux 포트 컨텍스트 추가
이 글에서 가장 중요한 부분입니다. SELinux를 enforcing 상태로 유지하면서 새 포트를 SSH용으로 등록해야 합니다. setenforce 0으로 넘기는 방식은 당장은 편해 보여도, 서버 운영 기준으로는 권장하기 어렵습니다.
먼저 semanage 명령이 없다면 패키지를 설치합니다.
sudo dnf install policycoreutils-python-utils
새 SSH 포트를 등록합니다.
sudo semanage port -a -t ssh_port_t -p tcp 2222
이미 같은 포트가 등록되어 있거나 기존 항목을 수정해야 한다면 -a 대신 -m을 사용합니다.
sudo semanage port -m -t ssh_port_t -p tcp 2222
등록 여부는 아래 명령으로 확인합니다.
sudo semanage port -l | grep ssh
정상이라면 ssh_port_t 항목에 2222가 포함되어 있어야 합니다. Rocky Linux 9에서 SSH 포트 변경 후 접속이 안 되는 문제는 이 SELinux 포트 컨텍스트에서 걸리는 경우가 많습니다.
3단계, firewalld에서 포트 열기
SELinux까지 맞췄다면 이제 OS 방화벽을 열 차례입니다. Rocky Linux 9 기준으로는 firewalld를 사용합니다.
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
기존 22번 포트를 닫을지는 바로 결정하지 않는 편이 안전합니다. 새 포트 접속이 확실히 되는 것을 확인한 뒤 닫아도 늦지 않습니다.
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
이 명령은 선택 사항입니다. 운영 중인 서버라면 새 포트 접속 성공 확인 후 기존 SSH 서비스 제거 순서로 진행하는 것이 안전합니다.
4단계, 적용하고 새 터미널에서 검증
설정이 끝났다면 sshd를 재시작합니다.
sudo systemctl restart sshd
기존 터미널은 그대로 둔 상태에서 새 터미널을 열고 변경한 포트로 접속합니다.
ssh -p 2222 user@host
접속이 안 된다면 설정을 다시 감으로 고치기보다, 어디서 막혔는지 나눠서 확인하는 편이 빠릅니다.
sudo ss -tlnp | grep 2222
sudo journalctl -u sshd -n 50 --no-pager
sudo firewall-cmd --list-ports
sudo semanage port -l | grep ssh
ss에서 2222 포트가 보이지 않으면 sshd 설정을 먼저 봐야 합니다. journalctl에서 SELinux 관련 거부 흔적이 보이면 포트 컨텍스트를 다시 확인해야 합니다. 클라우드 서버라면 이 단계에서 클라우드 보안 목록 인바운드 규칙도 함께 확인해야 합니다.
정리해두면 덜 당황합니다
SSH 포트 변경은 간단한 보안 설정처럼 보이지만, Rocky Linux 9에서는 sshd_config, SELinux, firewalld가 함께 맞아야 정상적으로 동작합니다. 특히 SELinux를 끄지 않고 포트 컨텍스트를 등록하는 것이 핵심입니다.
포트 변경만으로 보안이 끝나는 것은 아닙니다. 이후에는 SSH 키 인증, 비밀번호 로그인 차단, fail2ban 같은 설정까지 이어가면 홈서버 운영을 더 안정적으로 가져갈 수 있습니다.
답글 남기기