[TOC]
ssh端口转发
- 之所以使用ssh端口映射是为了使得前端不需要部署后台代码就可以在自己的本地进行测试,使得前后台进一步分离
- ssh端口准发也被称作为SSH隧道,因为它们都是通过SSH登陆之后,在SSH客户端与服务端之间建立一个隧道,从而进行通信。SSH隧道是十分安全的,因为SSH是通过加密传输的数据的
SSH端口转发模式
ssh有三种端口转发模式,本地端口转发(Local)、远程端口转发(Remote)、动态端口转发(Dynamic)
本地端口转发
为何需要本地端口转发
一般来讲,云主机的防火墙默认只打开了22端口,如果需要访问3000端口的话,需要修改防火墙。为了保证安全,防火墙需要配置允许访问的IP地址。但是,本地公网IP通常是网络提供商动态分配的,是不断变化的。这样的话,防火墙配置需要经常修改,就会很麻烦
本地端口转发是什么
所谓本地端口转发,就是将发送到本地端口的请求,转发到目标端口。这样,就可以通过访问本地端口,来访问目标端口的服务。使用-L属性,就可以指定需要转发的端口,语法如下:
ssh -L 本地网卡地址:本地端口:目标地址:目标端口 user_name@ip
实际上,-L选项中的本地网卡地址是可以省略的,这时表示2000端口绑定了本地主机A1的所有网卡:
ssh -L 2000:localhost:3000 user_name@ip
另外, -L选项中的目标地址也可以是其他的主机的地址
远程端口转发
为何需要远程端口转发
通常,本地主机是没有独立的公网IP的,它与同一网络中的主机共享一个IP。没有公网IP,云主机是无法访问本地主机上的服务的。
远程端口转发
所谓远程端口转发,就是将发送到远程端口的请求,转发到目标端口。这样,就可以通过访问远程端口,来访问目标端口的服务。使用-R属性,就可以指定需要转发的端口,语法如下:
ssh -R 远程网卡地址:远程端口:目标地址:目标端口 user_name@ip
同理,远程网卡地址可以省略,目标地址也可以是其他主机地址。
动态端口转发
为何需要动态端口转发
一方面,由于防火墙限制,本地主机A1并不能直接访问远程云主机B1上的服务,因此需要进行端口转发;另一方面,为每个端口分别创建本地端口转发非常麻烦。
动态端口转发
对于本地端口转发和远程端口转发,都存在两个一一对应的端口,分别位于SSH的客户端和服务端,而动态端口转发则只是绑定了一个本地端口,而目标地址:目标端口则是不固定的。目标地址:目标端口是由发起的请求决定的,比如,请求地址为192.168.1.100:3000,则通过SSH转发的请求地址也是192.168.1.100:3000。语法如下:
ssh -D 本地网卡地址:本地端口 user_name@ip
而在本地发起的请求,需要由Socket代理(Socket Proxy)转发到SSH绑定的2000端口。以Firefox浏览器为例,配置Socket代理需要找到首选项>高级>网络>连接->设置:
