윈도우에서 wsl 통해서 리버스 터널 프록시용으로 ssh reverse tunnel 사용시 시나리오 1. 내부망에 있는 A 서버를 클라이언트 C가 붙어야함 2. 외부망에 B 프록시 컴퓨터 생성 3, A 서버에서 B 프록시 서버로 ssh -R 로 리버스 터널 생성 4. C 클라이언트가 B 프록시 서버로 접속 5. A 서버 <- ssh port -> B 프록시 <- proxy port -> C 클라이언트 * 필요시 client 추가 가능 * A 서버 <- 내부 통신 -> A2 ssh client <- ssh port -> B 프록시 <- proxy port -> C 클라이언트 용어 정의 - server ssh port : 프록시용 서버의 ssh에 붙을 port - wsl ssh port : 프록시용 서버의 wsl에서 ssh에 붙을 port (default=22) - server proxy port : 프록시용 서버의 프록시로 사용할 port - wsl proxy port : 프록시용 서버의 wsl에서 프록시로 사용할 port - target server: 프록시를 통해서 붙을 목적 서버(ip기준 : ssh -R 을 실행한 컴퓨터에서 바라본 IP주소) - target port : 프록시를 통해서 붙을 목적 서버 포트(ip기준 : ssh -R 을 실행한 컴퓨터에서 바라본 포트) 1. (프록시) 프록시 서버로 쓸 컴퓨터에 wsl실행 2. (프록시) 프록시 서버 wsl에 실행 된 sshd 의 /etc/ssh/sshd_config 의 GatewayPorts yes 로 설정 3. (프록시) ssh server 실행 또는 재시행 4. (프록시) ssh port, proxy port 를 포트 포워딩 및 방화벽 해제 - 추가 netsh interface portproxy add v4tov4 listenport=<server ssh port:외부 공개 포트> listenaddress=0.0.0.0 connectport=<wsl ssh port=22> connectaddress=<WSL_IP> netsh interface portproxy add v4tov4 listenport=<server proxy port:외부 공개 포트> listenaddress=0.0.0.0 connectport=<wsl proxy port> connectaddress=<WSL_IP> New-NetFirewallRule -DisplayName "Allow WSL SSH Port" -Direction Inbound -Protocol TCP -Action Allow -LocalPort <server ssh port: SSH 외부 공개 포트> New-NetFirewallRule -DisplayName "Allow WSL Proxy Port" -Direction Inbound -Protocol TCP -Action Allow -LocalPort <server proxy port: 프록시 외부 공개 포트> - 삭제 netsh interface portproxy del v4tov4 listenport=<server ssh port:외부 공개 포트> listenaddress=0.0.0.0 netsh interface portproxy del v4tov4 listenport=<server proxy port:외부 공개 포트> listenaddress=0.0.0.0 Remove-NetFirewallRule -DisplayName "Allow WSL SSH Port" Remove-NetFirewallRule -DisplayName "Allow WSL Proxy Port" 5. (A서버 / A2 ssh client) 접근할 서버에서 프록시 서버로 터널링 - ssh -R <프록시 서버의 프록시용 포트>:<접근할 서버에서 접근하는 서버 주소=localhost>:<접근할 서버에서 접근하는 서버 포트> <그 뒤 일반 접속 옵션=user@server -p port>
list