ssh 포트 변경하는법 접속 끊김 없이 진행하려면

1회
ssh 포트 변경하는법 접속 끊김 없이 진행하려면

서버를 운영하면서 SSH 포트를 바꾼 뒤 접속이 끊겼다는 연락을 여러 번 받았다. 설정 파일에는 새 포트가 적혀 있는데 방화벽은 여전히 22번만 열려 있는 경우가 많았다. ssh 포트 변경하는법에서 중요한 건 숫자를 바꾸는 작업보다 새 접속이 되는지 확인할 때까지 기존 접속 경로를 남겨두는 순서다.

변경 전에 확인할 것

먼저 현재 접속한 터미널을 닫지 않는다. 가능하면 호스팅 업체의 웹 콘솔이나 복구 콘솔도 열 수 있는지 확인한다. SSH 설정을 잘못 적용해도 콘솔이 있으면 서버 안에서 되돌릴 수 있다. 설정 파일은 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 명령으로 복사해 둔다.

새 포트는 여기서 2222번을 예로 든다. 실제 운영에서는 1부터 65535 사이에서 다른 서비스가 쓰지 않는 TCP 포트를 고른다. sudo ss -lntp 명령으로 현재 열려 있는 포트를 확인하고, 호스팅 업체가 해당 포트의 외부 접속을 허용하는지도 확인한다. 포트만 바꾸면 무차별 로그인 시도가 조금 줄 수 있지만, 인증 자체가 강해지는 건 아니다. 공개키 인증과 계정 권한 설정은 별도로 관리해야 한다.

SSH 설정에 새 포트 추가하기

sudo nano /etc/ssh/sshd_config 명령으로 설정 파일을 연다. 처음에는 기존 포트와 새 포트를 함께 두는 편이 안전하다. 활성화된 Port 항목을 확인한 뒤 Port 22와 Port 2222를 각각 한 줄씩 넣는다. 앞에 #이 붙은 줄은 주석이라 적용되지 않는다. 여러 설정 파일에 Port가 적혀 있을 수 있으므로 /etc/ssh/sshd_config.d/ 아래 파일도 확인한다. Ubuntu는 이 디렉터리의 설정을 먼저 읽는 구성이 흔하다.

수정 후 sudo sshd -t로 문법을 검사한다. 아무 메시지 없이 끝나면 문법 검사는 통과한 것이다. sudo sshd -T 명령의 출력에서 port 항목도 확인한다. 다만 이 검사는 방화벽이나 외부 접속 가능 여부까지 보장하지 않는다. 문법 오류가 나오면 서비스를 재시작하기 전에 해당 줄부터 고친다.

광고

방화벽을 열고 설정 적용하기

서버 방화벽과 클라우드 보안 그룹을 모두 확인한다. Ubuntu에서 UFW를 사용한다면 sudo ufw allow 2222/tcp로 새 포트를 허용한다. firewalld를 쓴다면 sudo firewall-cmd --permanent --add-port=2222/tcp를 실행한 뒤 sudo firewall-cmd --reload를 실행한다. VPS 관리 화면에 별도 방화벽이 있다면 그곳에도 인바운드 TCP 2222 허용 규칙을 추가해야 한다. 접속 가능한 관리 IP가 고정돼 있다면 허용 대상을 그 IP로 제한하는 편이 좋다.

RHEL 계열에서 SELinux가 활성화돼 있다면 새 포트를 SSH용으로 등록해야 할 수 있다. sudo semanage port -a -t ssh_port_t -p tcp 2222를 실행한다. 포트가 이미 다른 유형으로 등록돼 있으면 등록 상태를 먼저 확인하고 충돌을 해결해야 한다. 방화벽만 열고 이 단계를 놓치면 SSH 서비스가 새 포트에서 대기하지 못할 수 있다.

일반적인 서비스 방식에서는 Ubuntu와 Debian은 sudo systemctl reload ssh, RHEL 계열은 sudo systemctl reload sshd로 설정을 반영한다. 사용하는 배포판에서 reload를 지원하지 않으면 해당 서비스를 restart한다. Ubuntu의 일부 설치 환경은 ssh.socket이 접속 포트를 관리한다. sudo systemctl is-active ssh.socket으로 확인하고, 활성 상태라면 설정 변경 후 sudo systemctl daemon-reload와 sudo systemctl restart ssh.socket을 실행한다. Ubuntu 안내도 소켓 활성화 환경에서는 이 단계를 별도로 설명한다.

새 접속을 확인한 뒤 22번 닫기

현재 터미널을 유지한 채 별도 터미널에서 ssh -p 2222 사용자명@서버아이피로 접속한다. 비밀번호나 키 인증을 거쳐 실제 셸까지 열리는지 확인해야 한다. 서버 안에서는 sudo ss -lntp로 2222번 대기 상태를 확인할 수 있다. 새 포트가 보이는데 외부에서 시간 초과가 난다면 서버 방화벽, 클라우드 보안 그룹, 공유기의 포트 전달 순서로 살핀다. 연결은 되지만 인증에 실패한다면 포트 설정보다 계정과 키 설정을 확인한다.

새 터미널에서 접속이 확인되면 Port 22를 제거하고 sudo sshd -t를 다시 실행한 뒤 앞에서 확인한 서비스 방식대로 반영한다. 22번의 방화벽 허용 규칙과 클라우드 인바운드 규칙도 제거한다. 접속이 실패했다면 기존 터미널에서 설정을 되돌리거나 백업 파일을 복원하고, 서비스 로그와 실제 대기 포트를 확인하면 된다. 저는 포트 변경 작업을 끝낼 때마다 새 연결을 두 번 열어본다. 접속 한 번의 성공보다, 기존 세션 없이도 다시 들어올 수 있다는 확인이 더 믿을 만하다.

ssh 포트 변경하는법 접속 끊김 없이 진행하려면 - 요약
광고

댓글 0

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

모두 ID로 로그인

불러오는 중…