Firewall 내부에 있는 Windows PC 에서 Putty를 이용하여 원격지의 ssh session 을 활성화 해 두면, 외부에서 SSH Tunnel 기능을 이용하여 내부망으로 언제든 접속 할 수 있는 방법을 간단한 메모 형식으로 기술 하고자 합니다.
Network Topology
[ a. Server (192.168.1.99:22) ] ----- [ b. WinPC (192.168.1.20) - Putty 실행 ] ---Firewall-- [ c. Cloud Linux Server on Public IP (49.236.146.247) ] ---- [ d. Personal PC on Public Internet ]
What to do
- a, b 가 속한 network 은 NAT 이하에 구성된 Private 영역으로 외부에서 접속 가능한 Public IP 가 존재 하지 않는다.
- c 환경은 특정 클라우드 서비스에서 무료로 제공하는 linux host 의 public ip 이다.
- 나는 어디에서든 c 환경의 shell 을 통해 a,b 가 속한 network 에 접속하고자 한다.
Step by step guide
- 퇴근하기 전 "b. WinPC 와 c. Cloud Linux Server on Public IP"의 SSH Shell 을 다음 옵션 설정과 함께 연결 해 둔다.
- "Putty" 의 Configuration >> Connections >> SSH >> Tunnels
- [O] Port Forwarding 의 Local ports accept connections from other hosts
- Source Port : "12345"
- Destination : "Internal IP:Port", e.g, 192.168.1.99:22
- Radio Buttion Select with "Remote", "Auto"
- Click Add button
- "R12345 192.168.1.99:22" 항목 추가 됨
Description
Cloud Server 의 localhost:12345 연결을 WinPC 에서 만든 192.168.1.99:22 연결로 forward 하라는 뜻.
Cloud Server 에서 연결 listen port 생성확인 법
sj@sj-micro:~$ netstat -ln | grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
Try SSH Connection from Cloud Server
Cloud Server 에서 a. Server에 접속하는 방법
sj@sj-micro:~$ ssh -p 12345 sj@localhost
이상입니다.