「내가 통제할 수 없는 NAT/방화벽 뒤의 컴퓨터」에 접속하려면?
일반적으론 불가능 — 하지만 그 컴퓨터가 외부 서버로 연결을 「먼저 거꾸로」 만들면 가능.
「Reverse SSH 터널」.
원리.
1) NAT 뒤의 컴퓨터(client)가 공개 서버(jumphost)로 SSH + -R 포트 포워딩.
2) jumphost의 특정 포트가 client에 연결됨.
3) 다른 어디서든 jumphost의 그 포트로 SSH → client에 도달.
기본 명령.
client에서: ssh -R 2222:localhost:22 user@jumphost.
jumphost의 2222 포트가 client의 22(SSH)로 연결.
다른 곳에서: ssh -p 2222 user@jumphost.
또는 jumphost에서: ssh -p 2222 localhost.
안정성 — autossh.
일반 SSH는 끊기면 끝.
autossh -M 0 -R 2222:localhost:22 user@jumphost — 끊기면 자동 재연결.
「항상 연결 유지」가 필요한 reverse 터널의 표준.
활용.
1) 집 서버 외부 접근 — 공유기 포트 포워딩 못 할 때.
2) IoT·라즈베리파이 원격 관리.
3) 회사 PC 원격 접속(주의 — 회사 정책 확인).
4) 외부 시연.
모두 보안 주의 — 잘못 노출되면 공격 통로.
한 줄 요약
Reverse SSH는 NAT 뒤 서버에 외부에서 접근.
client가 jumphost로 -R 포워딩 → jumphost 포트가 client 22로.
autossh로 끊겨도 재연결.
집 서버·IoT·외부 시연에 활용.
더 알아볼 것
- GatewayPorts yes 필요
- systemd로 autossh 데몬화
- Cloudflare Tunnel·ngrok 대안