홈서버 구축기 #2 SSH 원격 접속 설정 (내부/외부)
지난 포스팅에서 홈서버 하드웨어를 구성하고 Ubuntu를 설치했습니다. 이제 원격으로 서버에 접속할 수 있도록 SSH 설정을 해보겠습니다.
내부 네트워크에서 SSH 접속
Ubuntu 설치 시 마지막에 OpenSSH를 설치했다면, 같은 공유기에 연결된 기기에서 바로 SSH 접속이 가능합니다.
먼저 홈 서버의 내부 IP를 확인합니다.
ip addr
Bash네트워크 인터페이스 이름(enp11s0, wlp12s0 등)에 따라 IP가 표시됩니다. 제 경우는 172.30.1.96였습니다. 이제 와이파이 공유기에 연결된 (와이파이에 연결된) 같은 네트워크의 다른 PC에서 SSH로 접속할 수 있습니다.
ssh [우분투설치시만든ID]@172.30.1.96
The authenticity of host '172.30.1.96 (172.30.1.96)' can't be established.
ED25519 key fingerprint is SHA256:abcdefgabcdefg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
Warning: Permanently added '172.30.1.96' (ED25519) to the list of known hosts.
[우분투설치시만든ID]@172.30.1.96's password:
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-71-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Tue Aug 12 06:16:28 AM UTC 2025
System load: 0.07 Temperature: 38.0 C
Usage of /home: 0.4% of 786.37GB Processes: 252
Memory usage: 8% Users logged in: 1
Swap usage: 0% IPv4 address for enp11s0: 172.30.1.96
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Expanded Security Maintenance for Applications is not enabled.
128 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
Last login: Wed Jul 2 07:42:10 2025 from 119.123.123.123
Bash외부에서 SSH 접속하기
진정한 서버라면 외부에서도 접속할 수 있어야겠죠? VDSL 환경의 유동 IP를 사용하는 홈 네트워크에서 외부 접속을 설정해보겠습니다.
현재 네트워크 환경
- KT VDSL (유동 IP)
- 가비아 도메인 보유
1단계: 외부 IP 확인 및 DDNS 설정
유동 IP는 주기적으로 변경되므로, DDNS(Dynamic DNS)를 사용해야 합니다.
KT(공유기)의 경우 DDNS는 dyndns 또는 no-ip만 지원합니다.
- https://ip.pe.kr 에서 현재 외부 IP 확인 (예: 1.241.82.207)
- https://www.noip.com/ 가입 한다.
- DDNS & Remote Access > DNS Records > Hostname을 생성한다.
Host는 도메인에 들어가는 부분이며, IPv4 부분에 위에서 확인한 유동 IP를 넣어서 생성한다.
(Enable Dynamic DNS를 체크한다.) - 그 다음 Key를 만들어야한다.
- DDNS Keys 메뉴로 이동하여, Add Group를 클릭한다.
Description을 작성하고 Grouped Host에 아까 생성한 DNS Records를 설정한다. > Create 클릭 - 그룹 네임: 네임 지정
아이디: 추천 아이디 사용
비밀번호: 추천 비밀번호 사용
ddns key hostname 확인.
- DDNS Keys 메뉴로 이동하여, Add Group를 클릭한다.
- DDNS & Remote Access > DNS Records > Hostname을 생성한다.
- 공유기 관리 페이지 접속
- 내부 네트워크에 연결된 상태에서 http://172.30.1.254:8899/ 접속 후 로그인
- 아래 처럼 입력 ID와 비밀번호는 위에서 생성한 Key 정보로

4.DNS 전파 확인: https://dnschecker.org
해당 사이트에서 test.ddns.net을 입력하여 DNS 전파가 되었는지 확인합니다. (설정한 Host를 test라 가정)DNS Checker – DNS Check Propagation ToolCheck DNS Propagation worldwide. DNS Checker provides name server propagation check instantly. Changed nameservers so do a DNS lookup and check if DNS and nameservers have propagated.dnschecker.org
이제 공유기에 연결된 외부 IP가 변경되더라도, 고정적인 test.ddns.net을 통해 접근할 수 있습니다.
그리고 내부 네트워크에 연결된 상태에서 test.ddns.net에 접근하면 KT 공유기 화면이 뜰 것입니다.
(KT의 경우 외부에서 공유기 관리 페이지에 접근 못하도록 막아져 있어요.)
2단계: 도메인 연결
보유한 도메인을 DDNS 주소로 연결합니다. (만약 .ddns.net을 사용하고 싶다면 그대로 써도 됩니다.)
- 가비아 DNS 관리에서 CNAME 레코드 추가 (소유 도메인: test.com, ddns: test.ddns.net라고 가정)
- ssh.test.com → test.ddns.net (DNS 설정의 호스트에는 ssh만 작성)
3단계: 포트포워딩 설정
보안을 위해 SSH 기본 포트(22) 대신 다른 포트를 사용합니다.
공유기 관리 페이지에서 포트포워딩 규칙 추가
- 외부 포트: 8282
- 내부 IP: 172.30.1.96
- 내부 포트: 22

이제 외부에서 아래 명령어로 ssh 접근하면 접근 될 것입니다.
ssh [계정]@[ssh.test.com] -p 8282
Bash하지만 현재 홈 서버 데스크탑이 할당받은 172.30.1.96도 내부 IP로 공유기가 언제든지 변경 시킬 수 있습니다. 해서 아래 설정으로 해당 시스템은 설정한 IP로 고정 하도록 설정합니다.

4단계: 보안 설정 – 공유기 관리 페이지 숨기기
SKT의 경우(이전에 사용 경험) 외부에서 80번 포트로 접속하면 공유기 관리 페이지가 노출되는 문제가 있습니다. 하지만 KT의 경우 외부에서 접근시 기본적으로 막혀 있으므로 이와 관련된 내용은 간단하게만 설명합니다.
해결 방법
- 80번 포트도 홈서버로 포워딩
- 외부 포트: 80 → 내부: 172.30.1.96:80
- 이제 공유기 관리는 내부에서만 가능
- http://172.30.1.254 로만 접속
최종 네트워크 구조
외부 접속 흐름
ssh.test.com:8282
→ test.ddns.net:8282 (CNAME)
→ 1.241.82.207:8282 (DDNS)
→ 공유기 포트포워딩 (8282→22)
→ 172.30.1.96:22 (홈서버)
Plaintext고정 IP 할당
서버가 재부팅되어도 같은 내부 IP를 유지하도록 공유기에서 설정
- MAC 주소 기반으로 172.30.1.96 고정 할당 (글 본문에 상세 내용 있음)
여러 서비스 운영하기
현재 설정의 한계점이 하나 있습니다. 포트포워딩은 포트 번호만 보고 전달하기 때문에
a.test.com:80 → 공유기:80 → 172.30.1.96:80
b.test.com:80 → 공유기:80 → 172.30.1.96:80
blog.test.com:80 → 공유기:80 → 172.30.1.96:80
Plaintext모든 서브도메인이 같은 서버의 같은 포트로 연결됩니다. 공유기는 도메인 이름을 구분하지 못하거든요. 이와 관련된 해결 방법은 다음 글에서 기술해보겠습니다.
마치며
이제 어디서든 ssh -p 8282 [ID]@ssh.test.com 으로 홈서버에 접속할 수 있습니다. 다음 포스팅에서는 이 서버에 Libvirt/KVM을 설치하고 가상머신을 구성하는 방법을 다루겠습니다. 하나의 물리 서버에서 여러 가상 서버를 운영하면서 Nginx로 라우팅하는 방법도 함께 소개할 예정입니다.
P.S. 외부 포트는 8282처럼 잘 알려지지 않은 번호를 사용하세요. 22번 포트는 봇들이 계속 스캔합니다!