← 전체 글로 돌아가기

웹 개발

SSH 포트를 바꿨는데 UFW에서 나를 잠글 뻔한 설정 노트

SSH 포트 변경 작업에서 방화벽 허용 순서를 잘못 잡으면 서버에 못 들어갈 수 있다는 점을 정리한 설정 노트다.

바꾸기 전보다 순서가 더 중요했다

작은 VPS에서 SSH 기본 포트를 바꾸다가 잠깐 식은땀이 났다. sshd_config를 수정하고 서비스를 재시작했는데, UFW에는 새 포트를 아직 열어 두지 않았다. 다행히 기존 터미널 세션이 살아 있어서 복구했지만, 세션을 닫았다면 콘솔 접속을 찾아야 했을 상황이었다.

내가 수정한 파일은 보통 이 위치다.

sudo nano /etc/ssh/sshd_config

예를 들어 2222 포트를 쓰려면 다음처럼 바꾼다.

Port 2222

안전하게 적용한 순서

이후에는 포트 변경을 아래 순서로만 한다.

sudo ufw allow 2222/tcp
sudo sshd -t
sudo systemctl reload ssh
sudo ss -tlnp | grep ssh

여기서 sshd -t는 설정 문법을 확인하는 단계다. 예전에 옵션 이름을 잘못 적었는데도 바로 재시작하려고 해서 위험했다. 문법 확인이 통과한 뒤에 reload하는 습관이 생겼다.

새 세션으로 확인하기 전에는 닫지 않기

가장 중요한 기준은 기존 SSH 창을 닫지 않는 것이다. 새 터미널에서 새 포트로 접속이 되는지 확인한 뒤에야 이전 포트를 막는다.

ssh -p 2222 [email protected]

새 접속이 확인되면 그때 기존 22번 포트를 닫는다.

sudo ufw delete allow 22/tcp
sudo ufw status numbered

delete allow가 헷갈리면 status numbered로 번호를 확인한 뒤 삭제하는 편이 안전했다.

내가 적어 둔 복구 메모

만약 접속이 끊겼다면 클라우드 콘솔이나 웹 콘솔에서 다음을 확인한다.

sudo journalctl -u ssh -n 80 --no-pager
sudo ufw status verbose
sudo ss -tlnp | grep ssh

로그에 Bad configuration option이 보이면 sshd 설정 문제이고, 포트가 열려 있는데 접속이 안 되면 방화벽이나 클라우드 보안 그룹을 같이 봐야 한다.

짧은 결론

SSH 포트 변경은 명령어 자체보다 작업 순서가 더 무섭다. 새 포트 허용, 설정 검사, reload, 새 세션 확인, 기존 포트 정리 순서를 지키면 초보자도 실수 확률을 많이 줄일 수 있다.