如何使用 SSH 做正向或反向代理

2022-11-04 4849 次阅读 0

SSH可以被用来做正向和反向代理,从而实现通过SSH代理主机访问需要访问的网络服务。下面,我们先讲下什么是正常代理和反向代理。

正向代理:通过SSH方式讲远程主机的某个端口转发到本地主机制定的端口,从而实现通过本地主机端口访问远程主机端口的功能。

反向代理:通过SSH方式将本地主机的某个端口转发到远程主机指定的端口,从而实现通过远程主机端口访问本地主机端口的功能。

下面我们来举例更详细的说明下正向代理和方向代理。

正向代理

简单来说,正向代理就是主机A通过一台可以SSH访问的主机B访问主机C提供的服务。可以通过以下命令实现:

ssh -CNfL a_port:c_ip:c_port b_user@b_ip

参数说明

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-L 将本地机的某个端口转发到远端指定机器的指定端口

其中的C、N、f不是必须的参数,所以也可以不带,类似如下:

ssh -L a_port:c_ip:c_port b_user@b_ip

具体示例

主机A通过访问自己8080端口来访问主机C80端口,命令如下:

ssh -CNfL 8080:ip_c:80 b_user@b_ip

主机A通过访问自己1521端口来访问主机C1521端口,命令如下:

ssh -CNfL 1521:ip_c:1521 b_user@b_ip

主机A通过访问自己3306端口来访问主机C3306端口,命令如下:

ssh -CNfL 3306:ip_c:3306 b_user@b_ip

反向代理

简单来说,反向代理就是主机A通过一台可以SSH访问的主机B将主机A的端口服务通过主机B暴露出来。

反向代理的经典场景就是通过一台可以SSH访问的公网主机B来访问主机A(例如你家里自己的电脑)的端口服务。

命令如下:

ssh -CNfR b_port:127.0.0.1:a_port b_user@b_ip

这其中的a_portb_port端口需要是未被使用的端口。

 

写在最后

如果你已经理解量本文中讲解的内容,不妨自己尝试一下。希望以上内容对你有所帮助。

评论(0

暂无评论,来说两句吧

发表评论

回复 取消