如何使用 SSH 做正向或反向代理
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端口来访问主机C的80端口,命令如下:
ssh -CNfL 8080:ip_c:80 b_user@b_ip
主机A通过访问自己1521端口来访问主机C的1521端口,命令如下:
ssh -CNfL 1521:ip_c:1521 b_user@b_ip
主机A通过访问自己3306端口来访问主机C的3306端口,命令如下:
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_port和b_port端口需要是未被使用的端口。
写在最后
如果你已经理解量本文中讲解的内容,不妨自己尝试一下。希望以上内容对你有所帮助。
评论(0)
发表评论