Over SSH Tunnel

1. SSH 隧道(SSH Tunneling)

  • 广义概念:SSH 隧道是一种通过 SSH 协议在本地和远程服务器之间创建的加密通信通道,可以在此通道中转发任意的网络流量。SSH 隧道可以包括多种类型的端口转发方式。

  • 类型:SSH 隧道包括三种主要的端口转发方式:

    • 本地端口转发(Local Port Forwarding):使用 ssh -L 命令创建。
    • 远程端口转发(Remote Port Forwarding):使用 ssh -R 命令创建,允许远程主机通过隧道访问本地主机的某个端口。
    • 动态端口转发(Dynamic Port Forwarding):使用 ssh -D 命令创建,SSH 客户端在本地创建一个 SOCKS 代理,可以动态地转发流量到不同的远程端口。

2. ssh -L(本地端口转发,Local Port Forwarding)

  • 具体实现ssh -L 是创建 SSH 隧道的一种方式,用于将本地的某个端口转发到远程服务器上的另一个主机的端口。通过这个隧道,本地流量被加密并通过 SSH 连接发送到远程服务器,远程服务器再将流量解密并转发到内部主机。
  • 典型用途:非公网本地客户端 可以访问 远程内部主机 的服务,而无需直接在公网上暴露内部主机的端口,暴露的是远程公网服务器的ssh服务。此时目标服务器地址已知,远程公网服务器(正向代理服务器)代理客户端发送请求。
  • 语法: bash ssh -L [local_port]:[internal_ip]:[internal_port] -p [port_number] user@remote.example.com

假设内部主机是一台家里的windows,它的 IP 地址是 192.168.1.100,并且你希望将非公网电脑的端口 8080 转发到该内部主机的RDP 3389 端口,同时远程服务器的SSH 监听端口 通过家里的路由器暴露2222 端口(家里的windows起ssh 或 家里的另一台linux起ssh),那么在本地运行的完整命令如下:

ssh -L 8080:192.168.1.100:3389 -p 2222 user@remote.example.com

这样,你可以在工位电脑通过访问 localhost:8080 来通过 SSH 隧道访问家里的内部主机 192.168.1.1003389端口。

3. ssh -R(远程端口转发 或 反向隧道,Remote Port Forwarding):

  • 具体实现: ssh -R 是创建 SSH 隧道的另一种方式,用于将远程服务器上的某个端口转发到本地的某个端口。通过这个隧道,远程服务器上的流量被加密并通过 SSH 连接发送到本地,本地再将流量解密并转发到指定的本地端口。
  • 典型用途: 远程公网服务器 不能访问 非公网本地,但是远程服务器开了端口可以被本地访问。那么就可以在本地进行ssh -R命令行操作,允许远程服务器访问本地。此时远程服务器作为访问者,只知道远程公网服务器(反向代理服务器)的地址,客户端把请求发给代理后,不知道会转发给哪个目标服务器。
  • 语法: bash ssh -R [remote_port]:localhost:[local_port] -p [port_number] user@remote.example.com

假设远程公网服务器的9000端口监听 SSH 服务,此时可以将远程服务器上的端口 9001(为防止转发和服务冲突不能是9000)转发到本地某台电脑的 22端口,那么在本地运行的完整命令如下:

ssh -R 9001:192.168.1.XXX:22 -p 9000 user@remote.example.com

这样,你可以通过在远程公网服务器上访问localhost:9001 来访问非公网本地某台电脑的22端口。

一、正向代理

正向代理: 顺着请求的方向进行的代理,即代理服务器它是由你配置为你服务,去请求目标服务器地址。

举例一:
如我们现在想要访问谷歌,但是由于某些原因,无法直接访问到谷歌,我们可以通过连接一台代理服务器,代理服务将我们的请求提交到谷歌,然后再将谷歌的响应反馈给我们,对于谷歌而言,它只知道有一个请求过来,但是它并不会知道我们是无法直接访问它的。

在这里插入图片描述
正向代理的作用:

  1. 访问原来无法访问的资源,如google

  2. 可以做缓存,加速访问资源

  3. 对客户端访问授权,上网进行认证

  4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

二、反向代理

反向代理: 跟正向代理相反,它是为目标服务器进行服务的,但是请求的流程还是: clieng -> proxy -> server。

举例: 比如我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com
。具体内部的服务器节点我们不知道。现实中我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回,此时,代理服务器对我们客户端来说就充当了提供响应的服务器,但是对于目标服务器来说,它只是进行了一个请求和转发的功能。

在这里插入图片描述
反向代理的作用:

  1. 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。

  2. 负载均衡,通过反向代理服务器来优化网站的负载。

三、两者的区别与联系

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.

反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端.

在这里插入图片描述
联系:

1、正向代理中,proxy和client同属一个LAN,对server透明;

2、反向代理中,proxy和server同属一个LAN,对client透明。

四、总结
事实上,正向代理和反向代理的作用都是进行请求和转发,但是为了区别正向代理,所以后出现的就成为反向代理。

生活中最常见的例子:

1、正向代理: 卖票的黄牛

2、反向代理: 出租房的二手东

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值