Rocky Linux 9 SSH 포트 변경과 SELinux 접속 오류 해결

·

, ,

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

홈서버 SSH 설정 참고 이미지

먼저 끊지 말아야 할 것

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 같은 설정까지 이어가면 홈서버 운영을 더 안정적으로 가져갈 수 있습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다