ssh 포트변경 접속 끊지 않고 하는 방법

ssh 포트변경 접속 끊지 않고 하는 방법

얼마 전 VPS를 옮기던 중 SSH 포트를 먼저 바꿨다가 접속이 끊긴 사례를 봤습니다. 서버는 멀쩡했는데 새 포트를 방화벽에서 열지 않은 상태였습니다. ssh 포트변경 자체는 설정 한두 줄이면 끝납니다. 실제 작업은 기존 접속을 살려 둔 채 새 접속이 되는지 확인하는 데 더 신경 써야 합니다.

접속 경로와 기존 설정부터 확인합니다

작업 중인 SSH 창은 끝날 때까지 닫지 마세요. 가능하면 호스팅 관리 화면의 콘솔 접속도 미리 확인합니다. 새 포트로 접속하지 못할 때 설정을 되돌릴 경로가 필요하기 때문입니다. 현재 설정은 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 명령으로 복사해 둡니다.

예시 포트는 2222입니다. 먼저 sudo ss -ltn 명령으로 다른 서비스가 쓰는 포트인지 확인합니다. 포트 번호는 1024 이상에서 고르고, 서버 방화벽뿐 아니라 클라우드 보안 그룹이나 호스팅 업체의 외부 방화벽에도 같은 TCP 포트를 열어야 합니다. 한쪽만 열면 서버 안에서는 정상으로 보여도 밖에서는 접속되지 않습니다.

Ubuntu에서 UFW를 사용한다면 sudo ufw allow 2222/tcp를 실행하고 sudo ufw status로 규칙을 확인합니다. UFW를 사용하지 않는 서버라면 실제로 적용 중인 방화벽을 확인해야 합니다. 외부 방화벽이 있는 VPS에서는 관리 화면의 인바운드 규칙도 별도로 확인합니다. 기존 22번 포트는 이 단계에서 닫지 않습니다.

새 포트를 추가한 뒤 설정을 검사합니다

/etc/ssh/sshd_config를 열어 Port 22와 Port 2222를 각각 한 줄씩 넣습니다. OpenSSH는 Port 지시어를 여러 번 사용할 수 있어 두 포트를 잠시 함께 열 수 있습니다. 파일에 Include 지시어가 있다면 /etc/ssh/sshd_config.d/ 아래 파일에도 Port 설정이 있는지 확인하세요. 기본 포트인 22를 계속 쓰려면 Port 22를 명시해야 합니다. Port 2222만 추가하면 기본값 22가 유지될 것으로 생각하기 쉬운데, 명시한 포트가 적용됩니다.

수정 후에는 sudo sshd -t로 문법과 호스트 키 상태를 검사합니다. 오류가 나오면 서비스를 건드리기 전에 해당 줄부터 고칩니다. sudo sshd -T 명령의 출력에서 port 항목을 확인하면 실제로 읽힌 설정도 볼 수 있습니다. 다만 이 검사는 방화벽이나 외부 접속 가능 여부까지 확인해 주지는 않습니다.

일반적인 systemd 환경에서는 sudo systemctl reload ssh 또는 배포판에 따라 sudo systemctl reload sshd로 설정을 반영합니다. 서비스 이름은 systemctl status ssh와 systemctl status sshd 중 해당 서버에서 쓰는 쪽을 확인하면 됩니다. reload가 지원되지 않으면 설정 검사 결과를 확인한 뒤 restart를 사용합니다.

광고

Ubuntu와 RHEL 계열은 추가 확인이 필요합니다

Ubuntu 24.04처럼 SSH가 systemd의 ssh.socket으로 동작하는 서버에서는 서비스만 다시 시작해도 포트가 그대로일 수 있습니다. 이 경우 sudo systemctl daemon-reload 뒤 sudo systemctl restart ssh.socket을 실행하고, systemctl status ssh.socket으로 상태를 확인합니다. Ubuntu의 릴리스와 기존 업그레이드 이력에 따라 구성 방식이 다를 수 있으니 먼저 systemctl status ssh.socket을 보는 편이 정확합니다.

RHEL 계열에서 SELinux가 활성화돼 있다면 새 포트를 SSH용으로 허용해야 합니다. 예시는 sudo semanage port -a -t ssh_port_t -p tcp 2222입니다. 이미 다른 SELinux 유형에 할당된 포트라면 이 명령은 실패하므로 기존 할당을 먼저 확인해야 합니다. firewalld를 쓴다면 sudo firewall-cmd --permanent --add-port=2222/tcp를 실행한 뒤 sudo firewall-cmd --reload로 반영합니다. 설정 파일, SELinux, 방화벽 중 하나라도 빠지면 접속이 실패할 수 있습니다.

새 창에서 접속한 다음 옛 포트를 닫습니다

기존 SSH 창은 그대로 두고 다른 터미널에서 ssh -p 2222 사용자명@서버IP로 접속합니다. 로그인에 성공한 뒤 간단한 명령까지 실행해 보세요. sudo ss -ltnp로 2222 포트가 실제로 대기 중인지도 확인합니다. 서버 안에서 포트가 보이는데 외부 접속이 시간 초과된다면 외부 방화벽이나 보안 그룹부터 점검합니다. 연결이 즉시 거부된다면 서비스 상태와 포트 설정을 먼저 봅니다.

새 접속을 확인한 다음 Port 22를 설정에서 제거하고 설정 검사를 다시 거쳐 반영합니다. 그 후 22번 포트의 호스트 방화벽과 외부 방화벽 규칙을 닫습니다. 자동 백업, 배포 작업, SFTP 프로그램, 감시 도구가 22번 포트를 사용했다면 접속 설정도 함께 바꿔야 합니다. 운영 중에는 이런 작업 하나가 빠져 다음 장애로 이어지는 일이 많습니다.

포트를 바꾸면 22번으로 몰리는 무차별 접속 시도는 줄 수 있습니다. 하지만 포트 번호만으로 서버가 안전해지는 것은 아닙니다. 저는 변경 직후 새 창에서 로그인하는 절차를 가장 중요하게 봅니다. 접속을 잃지 않고 확인할 수 있어야 다음 설정도 차분히 고칠 수 있습니다.

ssh 포트변경 접속 끊지 않고 하는 방법 - 요약
광고

댓글 0

평가를 남기려면 로그인해 주세요.

모두 ID로 로그인

불러오는 중…