1. 시작하며
최근 라즈베리파이5를 Sub Server로 설정하여 원격 접속을 통해 관리하던 중, 갑자기 외부에서 SSH로 접속이 되지 않는 문제가 발생했습니다. 사설 IP로는 정상적으로 접속이 가능했지만, 공인 IP를 통한 외부 접속에서는 실패하였습니다. 본 포스트에서는 문제의 원인을 분석하고 해결 과정을 공유하고자 합니다.
2. 문제점 발생
외부에서 공인 IP를 이용한 SSH 접속이 불가능한 상황이었습니다. 이는 네트워크 설정 혹은 SSH 설정의 문제로 추정되었습니다.
2.1 원인 분석
1) SSH 설정 확인하기
먼저, 서버의 SSH 설정을 확인해보겠습니다. 아래 명령어를 통해 설정 파일을 열어 확인하겠습니다.
sudo nano /etc/ssh/sshd_config
해당 파일에서 SSH 연결 포트가 기본값인 22가 아닌 2222로 설정되어 있는 것을 확인할 수 있었습니다.
2) 포트포워딩 확인하기
제 방의 네트워크는 IPTIME 공유기를 통해 구성되어 있으므로, 공유기의 관리자 페이지에서 포트포워딩 설정을 확인했습니다. 공유기 설정 페이지(192.168.0.1)에 접속하여 포트포워딩 규칙을 점검한 결과, 내부 IP(192.168.0.47)에 대해 외부 포트는 2222로 설정되어 있었으나, 내부 포트는 22로 설정되어 있었습니다.
위 설정으로 인해 SSH 설정 파일에서 사용 중인 2222 포트와 공유기에서 설정한 내부 포트(22)가 불일치하여 외부에서 접속이 불가능했던 것입니다.
3. 문제점 해결
문제의 원인을 파악한 후, 두 가지 해결 방안을 검토했습니다.
- SSH 설정 파일에서 포트를 기본값인 22로 변경
- 공유기 포트포워딩 설정에서 내부 포트를 2222로 변경
1) SSH 설정 파일 수정
SSH 설정 파일(/etc/ssh/sshd_config
)에서 포트를 22로 변경하려면 아래와 같은 과정을 따릅니다.
- 설정 파일 열기
sudo nano /etc/ssh/sshd_config
Port 2222
를Port 22
로 수정- SSH 서비스 재시작
sudo systemctl restart sshd
2) 공유기 포트포워딩 설정 수정
공유기 관리자 페이지에 접속하여 포트포워딩 설정을 아래와 같이 변경했습니다.
- 외부 포트: 2222
- 내부 포트: 22
설정을 저장한 후, 변경 사항이 제대로 적용되었는지 확인했습니다.
4. 확인 및 테스트
변경 후, 외부에서 공인 IP와 포트 2222를 사용하여 SSH 접속을 시도한 결과, 정상적으로 접속이 가능했습니다. 이때, Mobaxterm을 이용하여 접속을 확인했습니다.
아래는 Mobaxterm 설정 화면입니다.
- Remote host: 공인 IP
- Specify username: 서버에 연결할 계정명
- Port: 2222
개인 키를 사용하여 연결을 설정했으며, 보안상의 이유로 개인 키 경로는 모자이크 처리되었습니다.
테스트 결과, 사설 IP를 통한 접속은 물론 공인 IP를 통한 외부 접속도 정상적으로 이루어졌습니다.
5. 결론
이번 사례를 통해 포트포워딩 설정과 SSH 설정의 일관성이 얼마나 중요한지 알게 되었습니다. 특히, 아래와 같은 점을 유의해야 함을 깨달았습니다.
- SSH 포트와 포트포워딩 설정의 포트 번호가 일치해야 합니다.
- 변경된 설정은 반드시 서비스 재시작을 통해 적용해야 합니다.
- 설정 변경 후, 내부 및 외부에서의 접속 테스트를 통해 문제가 해결되었는지 확인해야 합니다.
앞으로는 네트워크와 서버 설정을 변경할 때 이러한 문제를 미리 방지할 수 있도록 주의해야겠습니다.
'트러블 슈팅' 카테고리의 다른 글
[트러블 슈팅] RESTful API 설계: GET 메서드에서 Request Body를 사용해도 될까? (0) | 2025.01.13 |
---|---|
[트러블 슈팅] Jenkins Publish over SSH: BapPublisherException 오류 해결하기 (2) | 2025.01.05 |