Skip to content

Latest commit

 

History

History
80 lines (54 loc) · 3.31 KB

ssh端口转发.md

File metadata and controls

80 lines (54 loc) · 3.31 KB

ssh 端口转发技术

ssh 端口转发分为三个部分: - 正向转发(正向代理) - 反向转发(反向代理) - 动态转发(动态代理)

正向转发

示例:由于在服务器上的mysql服务不能通过远程访问的方式登录和访问,只能通过本地访问的方式来访问。如上图所示,你如果来内网设备1上,要登录上服务器中的mysql数据库中,你可以使用ssh的正向端口转发来操作。

你可以在内网设备1执行命令如下:

ssh -L 33:localhost:3306 USERNAME:23.24.123.12

以上命令的意思是:我们可以通过访问本地的33端口就好似访问远程mysql服务器上的3306端口。

反向转发

**注意:**如果你要实现反向代理首先得需要在服务器的sshd配置的配置文件中配置一个参数:

# 默认的sshd配置文件在 /etc/ssh/sshd_config
GatewayPorts yes

重启sshd服务,重启命令:systemctl restart sshd 或者 service sshd restart

示例:如果你现在在上图的移动设备中,而且移动设备是连上互联网的,如果你在移动设备上访问内网设备2上的服务,因为内网设备2在内网中,是不能直接访问的。如果你有个公网上的服务器,那么就可以使用ssh反向端口转发来实现。这里假设你拥有的公网服务器是WEB服务器(23.24.123.11)

你可以在内网设备2执行命令如下:

ssh -R 0.0.0.0:23333:localhost:8080 [email protected]

反向转发就是把本地一个端口暴露到某个公网服务器上的某个端口,以上命令的意思是:我访问23.24.123.11机器的23333端口,就好似在访问内网设备2的8080端口。其中0.0.0.0的意思是任意IP的机器都可以访问23.24.123.11的23333端口。

如果你要访问内网设备2上的服务,就可以把以上命令中的localhost换成内网设备2的IP地址,命令如下:

ssh -R 0.0.0.0:23333:192.168.1.1:8080 [email protected]

以上命令的意思就是把192.168.1.1:8080映射到23.24.123.11:23333

动态转发

动态转发其实比较好理解,如果我们在内网设备1上,我们想去访问:https://www.baidu.com/s?ie=utf-8&wd=IP ,可以掉IP为:202.123.4.1。如果我们通过服务器:WEB服务器(23.24.123.11),那么百度出来的IP就是:23.24.123.11。

可以执行如下命令来动态转发:

ssh -D 8880 [email protected]

以上命令的意思是:用WEB服务器把本地8880端口的数据动态转发出去。

ssh 命令其他参数

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

维持连接

ssh隧道默认情况下长时间没有用是会被断开的,如果想要维持长时间连接可以加上参数:

-o ServerAliveInterval=60