再说隧道netsh/ssh/plink

命令是次要,重点了解过程

windows端口转发

1
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport

listenaddress – 等待连接的本地IP地址。
listenport – 本地侦听TCP端口。
connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)。
条件:请确保iphlpsvc(IP Helper)服务当前已在你的系统上运行。必须在为其创建端口转发规则的网络接口上启用IPv6支持。

linux 反向隧道

1
2
ssh -ngfNTR 1222:192.168.100.3:22 root@192.168.0.173 -o ServerAliveInterval=300
ssh -ngfNTL 1222:localhost:22 root@192.168.0.173 -o ServerAliveInterval=300

-R理解:173机器开端口1222反向链接100.3
-L理解:本机的1222端口正向链接173的22端口

1
2
ssh -ngfNTL 1222:127.0.0.1:22 root@192.168.11.97
sh -ngfNTR 1222:127.0.0.1:22 root@192.168.11.97

-R理解:97机器开端口1222反向链接本地的22端口
-L理解:本机的1222端口正向链接97的22端口
正向反向:执行命令的机器(A)<+=====+>root@ip(B) 之间存在链接,其一:A监听的端口并转发到B,其二:A链接上B后,让B监听并转发给A则反向。

-f 表示后台执行
-N 表示不执行任何命令
-R 建立反向隧道
1222 173机用来外面ssh的监听端口
-o ServerAliveInterval=300 的意思是让ssh client每300秒就给server发个心跳,以免链路被RST.
-f Requests ssh to go to background just before command execution. 让该命令后台运行 .
-n Redirects stdin from /dev/null (actually, prevents reading from stdin).
-N Do not execute a remote command. 不执行远程命令 .
-T Disable pseudo-tty allocation. 不占用 shell .
-g Allows remote hosts to connect to local forwarded ports.