首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SSH Tunnel

SSH (SSH 全称为 Secure Shell)端口转发也被称作 SSH 隧道(SSH Tunnel),因为它们都是通过SSH登陆之后,在 SSH 客户端与 SSH 服务端之间建立了一个隧道,从而进行通信。SSH 隧道是非常安全的,因为 SSH 是通过加密传输数据的。有了隧道我们自然可以翻山越岭,看看外面的花花世界。

简介

SSH 有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。

符号说明

文中使用A、B、C:

A,本地

B,远端SSH服务器

C,目标服务器

Local Port Forwarding

使用场景

A——B:portB——C:portC

A—————C:portC

如上图所示,本地主机A 可以访问远端 SSH 服务器 B 端口 portB,B 可以访问目标主机 C 端口 portC,但是 A 访问 C 的端口 portC。当然 C 也可能是 B(有点绕。。。):

A——B:portB——B:portB2

A—————B:portB2

上图所示本地主机 A 可以访问远端SSH服务器 B 的 PortB 端口,但不能访问 PortB2 端口。

使用本地端口转发就可以解决上述问题。

使用

命令如下:

bind_address 是本地主机地址,可省略,表示绑定本机所有IP。port 是本地主机绑定的端口。

例:

这样,发送到本地端口 portA 的数据将会通过 B 转发给 C 的端口 portC,效果如下:

*——A:portA======B====C:portC

Remote Port Forwarding

使用场景

C:portC——A——B:portB

C:portC—————B

如上图所示,本地主机A 可以访问远端 SSH 服务器 B 端口 portB,A 也可以访问目标主机 C 端口 portC,但是 B 不能访问 C 的端口 portC。当然 C 也可能是 A:

A———B:portB

A:portA-—-B

很多情况下是因为本地主机 A 处在内网,外网无法直接访问 A,就可以使用该方法进行 NAT 穿透。

使用

命令如下:

bind_address 是远端 SSH 服务器绑定地址,同样可省略。port 是远端 SSH 服务器绑定的地址。

例:

这样,发送到远端服务器B portB 的数据将会通过本地主机 A 转发给 C 的端口 portC,效果如下:

*——B:portB======A====C:portC

Dynamic Port Forwarding

使用场景

上述两个端口转发都限制了目标服务器以及目标服务器对应的端口,而动态端口转发更像是一个代理。

A——B:portB——花花世界

A—————花花世界

看到这,是不是发现了什么?

使用

命令如下:

bind_address 是本地主机地址,可省略,表示绑定本机所有IP。port 是本地主机绑定的端口。

例:

这样,发送到本地主机 A portA 的数据将会转发给B,远程主机 B 会根据数据包的应用层协议(如HTTP)自动建立对应的连接,并将数据返回给 A。

SSH 部分参数

-p: 指定端口

-C: 压缩发送/接受的数据

-N: 不执行远端命令,端口转发时使用

-f: 后台操作,通常和-N连用

-g: 允许远端主机连接本地转发端口

其他命令可参考手册

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180125G0KN0300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券