SSH 설정을 접속 차단 없이 검증하기 — sshd -t·별도 포트·기존 세션 유지

조회수 1

도입

원격 서버의 SSH 설정을 바로 바꾸고 기존 세션을 종료하면 문법 오류, 인증 방식 오류 또는 방화벽 누락 때문에 서버 접근을 잃을 수 있다. 안전한 변경은 문법 검사, 실제 적용값 확인, 별도 포트 테스트와 새 세션 검증을 순서대로 수행한다.

콘솔 접근이 가능한 테스트 VM에서 먼저 수행한다. 배포판에 따라 서비스명, 설정 include 경로와 재시작 명령이 다를 수 있다.

변경 전 안전선

  1. 클라우드 콘솔 또는 직렬 콘솔 복구 경로를 확인한다.
  2. 현재 SSH 세션을 유지한다.
  3. 원본 설정과 파일 권한을 백업한다.
  4. 방화벽과 보안 그룹 변경은 새 포트 테스트 계획과 함께 검토한다.

비밀번호 인증을 끄기 전에는 별도의 새 세션에서 키 인증이 성공해야 한다.

임시 설정과 별도 포트로 변경 검증하기

문법과 유효 설정 확인

sudo cp /etc/ssh/sshd_config /tmp/sshd_config.test
sudo sshd -t -f /tmp/sshd_config.test
sudo sshd -T -f /tmp/sshd_config.test | sort

-t는 설정과 키의 기본 유효성을 검사하고, -T는 적용될 값을 출력한다. Match 조건은 연결 조건에 따라 달라질 수 있으므로 필요한 경우 사용자·호스트·주소 조건을 지정해 확인한다.

sshd 임시 설정 파일에서 잘못된 지시어를 발견한 문법 검사 결과
sshd를 다시 시작하기 전에 별도 파일로 문법 오류를 확인한다.

새 세션으로 검증

테스트 VM에서만 임시 설정의 별도 포트로 sshd를 실행한다. 기존 세션은 닫지 않고 새 터미널에서 해당 포트로 접속한 뒤 인증 방식과 사용자 권한을 확인한다.

sudo /usr/sbin/sshd -D -f /tmp/sshd_config.test -p 2222
ssh -p 2222 testuser@example.test
whoami
ss -lntp | grep 2222

포트와 계정은 테스트 값으로 바꾼다. 성공 후 임시 프로세스를 종료하고 정식 설정 반영 전 다시 sshd -t를 실행한다.

별도 포트 2222로 새 SSH 세션 접속에 성공한 화면
기존 세션을 유지한 채 별도 포트로 새 접속이 성공한다.
새 세션에서 whoami·hostname·ss로 별도 포트 리스닝을 확인한 결과
22번과 2222번이 동시에 리스닝 중이며 새 세션 인증이 정상임을 확인한다.

문법 검사를 통과한 뒤에도 접속이 실패하는 이유

sshd -t는 성공하지만 로그인은 실패한다

증상

설정 문법은 맞지만 새 세션 인증이 거부된다.

원인

키 권한, Match 규칙, PAM, 계정 상태 또는 네트워크 경로 문제다.

확인 방법

클라이언트 ssh -vvv와 서버 인증 로그를 같은 시각으로 확인한다.

해결

실패 단계에 해당하는 설정만 수정하고 재시험한다.

예방

문법 검사와 새 연결 테스트를 별도 게이트로 둔다.

재시작 후 기존 세션만 정상이다

증상

열려 있던 세션은 유지되지만 새 접속이 안 된다.

원인

기존 세션은 변경 전 인증을 이미 마쳤다.

확인 방법

반드시 새 터미널에서 새 연결을 만든다.

해결

기존 세션으로 롤백하고 로그를 확인한다.

예방

새 세션 성공 전 기존 세션을 종료하지 않는다.

설정 반영 전 체크리스트

  • 기존 세션과 콘솔 복구 경로가 열려 있는가?
  • 문법과 실제 적용값을 확인했는가?
  • 별도 포트의 새 세션에서 인증이 성공했는가?
  • 실패하면 즉시 되돌릴 수 있는가?

참고 자료

한 줄 요약

SSH 설정은 기존 세션과 콘솔 복구 경로를 유지한 채 문법·적용값·별도 포트·새 연결을 모두 확인한 뒤 반영해야 한다.

댓글 0

  • 첫 번째 댓글을 남겨보세요.