SSH 正、反向代理实现稳定的内网穿透实验_

 

 

 

测试环境简介:

服务器 A(C7): 内网提供服务的服务器(无公网IP)

跳板机 B(C6):用于跳板的服务器(有公网IP,且可以访问内网【服务器 A】)

客户端 C(win10):纯外网客户端(可以访问到【跳板机 B】)

 

实现效果,通过外网客户端C,访问到内网服务器A的内容。

 

反向代理
ssh -fCNR

e.g.

ssh -fCNR <跳板机 B 用于和服务器 A隧道端口>:127.0.0.1:<服务器 A 提供的服务的端口,比如80,21...>-p1211 <B服务器账号>@<B服务器IP>

ssh -fCNR 1213:127.0.0.1:8099 -p1211 secret@192.168.xx.xx

 

正向代理
ssh -fCNL

e.g.

ssh -fCNL *:<跳板机 B 外网可访问的端口>:127.0.0.1:<和服务器A 通信传输的隧道端口(需要和反向过来的端口一致)> -p<ssh自定义的端口号,默认22端口可不使用> 127.0.0.1

ssh -fCNL *:8099:127.0.0.1:1213 -p1211 127.0.0.1

 

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

【最后】:ssh 解决持久化问题,使用autossh

1. 首先完成2边的ssh等效性(并且跳转机还需要多做一次自己的等效性),免密码工作!!!

2. 安装 yum install autossh

 

autossh建立稳定隧道

服务器A上执行:autossh -M 1214 -fCNR 1213:127.0.0.1:8099 -p1211 secret@192.168.xx.xx

跳板机B 上执行: autossh -M 1215 -fCNL *:8099:127.0.0.1:1213 -p1211 127.0.0.1   

 

# 上面命令测试成功后,通过netstat 进行验证,查看是否开启了相应端口。最后,添加到开机启动文件下面。

C6: /etc/rc.local

C7:/etc/rc.d/rc.local

   

参考资料:

https://blog.csdn.net/jiangbenchu/article/details/84438959

https://blog.csdn.net/upshi/article/details/78630285

https://www.cnblogs.com/kwongtai/p/6903420.html

https://www.imzcy.cn/1176.html  (这里提到了另外一个好玩的东西,不用ssh等效性输入密码的玩意:expect )

https://www.imzcy.cn/1226.html(同上)

 

 

# 拓展学习—— windows 上如何实现类似效果 20210818

首先打开命令提示符(cmd)
netsh interface portproxy add v4tov4 listenport=监听端口 connectaddress=转发到的地址 connectport=转发到的端口
例子: netsh interface portproxy add v4tov4 listenport=跳板机B监听端口 connectaddress=服务器A的IP地址 connectport=服务器A的端口

2. 查看转发了哪些端口
netsh interface portproxy show all

3. 删除转发规则
netsh interface portproxy delete v4tov4 listenaddress=服务器A的IP地址 listenport=跳板机B监听端口 

posted @ 2019-11-01 11:10  Cong0ks  阅读(864)  评论(0编辑  收藏  举报