跳转至

Ssh隧道

参考#

SSH隧道技术_b站饼哥

参数#

-C :压缩数据传输。
-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-N :不执行脚本或命令,通常与-f连用。
-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
-L :本地转发
-R :远程转发
-D :动态转发,即socks代理

本地转发(本地建立监听)#

ssh -C -f -N -g -L <本地监听ip>:<本地端口>:<远程ip>:<远程端口> 用户名@目标IP -p <ssh端口>
ssh -fCNgL[本地IP][本地port]:<远程ip>:<远程port> user@目标ip

远程转发(远端建立监听)#

ssh -C -f -N -g -R <远程ip>:<远程端口>:<本地ip>:<本地端口> 用户名@目标IP -p <ssh端口>

注:如果远端不能监听0.0.0.0,以下两个方法:

1. 需要修改 ssh 配置/etc/ssh/sshd_config

动态转发(socks)#

ssh -C -f -N -g -D <本地ip>:<本地端口> 用户名@目标IP -p <ssh端口>

socks代理上本地的1080端口,即可访问192.168.2.101的内网环境

场景实践#

他们之间的区别就是映射到那里的问题

反向(云服务器开端口),远程接口,献身#

场景1.在家访问办公室的电脑#

反向的意思是发起者反而是(通过跳板机),
被访问的对象将内网里边的服务暴露给外网
Pasted image 20230407111631.png
1.公司的内网电脑(大电)通过云端的拥有公网的ip(220.12.22.76)的服务器
2.**大电发起ssh命令请求**通过反向转发,请求云端服务器起一个端口(220.12.22.76:13389)
3.使可以连接到互联网的家里的小电可以访问到公司内部的一台内网中的电脑(大电)

ssh -fNCR 13389:localhost:3389 tom@220.12.22.76:22
13389是委托云服务器远端开的端口
localhost:3389指大电的本地的远程连接地址
mstsc just for windows
mstsc 220.12.22.76:13389

场景2,腾讯的推送服务推送到本地开发机#

Pasted image 20230407111918.png
1. 开发pc2上请求公网服务器(生产环境服务器)
2. ssh -fNCR 18080:localhost:8080 tom@220.12.22.76
3. 这样腾讯的推送就会推送到开发pc2

正向,本地接口,拽过来#

我想访问外网的资源,但是此资源没有公网
#### 场景1 访问内网数据库,将远方映射到本地老大哥手里,内网再去访问老大哥
Pasted image 20230407114911.png