赞
踩
目录
我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,Web这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能:
SSH一共提供了 3 种端口转发,分别是本地转发(-L参数)、远程转发(-R参数)、动态转发(-D参数)。 还可以实现多层转发。
使用场景:一台 服务器(目的主机)限制了只有特地主机(如服务器自身)才能直接连接此服务器上的应用。如果我们由于调试或者测试的需要想临时从其他机器(本地主机)访问这台服务器 , 有什么方法能够实现呢?本地端口转发可以做到。
本地端口转发通过参数 -L 指定,命令格式:
ssl -L [本地主机bind地址:]本地主机端口:目的主机:目的主机端口 User@跳板主机
举例:ssh -L 55555:192.168.43.203:3000 zyplanke@192.168.43.201
执行以上命令后:
通过本地端口转发与直接访问目的主机(若允许直接访问)的区别:
使用场景:一台 服务器(目的主机)在内部网络,无法从外部访问。而跳板主机有公网IP连接外网,也能访问内部网络。如何通过跳板主机实现从外部访问内部的目的主机呢?远程端口转发可以做到。
远程端口转发通过参数 -R 指定,命令格式:
ssl -R [跳板主机bind地址:]跳板主机端口:目的主机:目的主机端口 User@跳板主机
举例:ssh -R 3389:192.168.43.203:3389 zyplanke@192.168.43.201
执行以上命令后:
使用场景:前文的本地转发、远程转发都需要提前知道并指定目的主机的地址和端口。但在代理上网等场景,无法提前指导客户端要访问的网址(且网址也不固定),这时候就需要动态转发了。动态转发是通过SOCKS4或SOCKS5协议完成!
本地端口转发通过参数 -D 指定,命令格式:
ssl -D [本地主机bind地址:]本地主机端口 User@跳板主机
举例:ssh -D 44444 zyplanke@192.168.43.201
当成功执行上面这个命令后。在浏览器中设置代理类型为 SOCKS,代理地址:127.0.0.1,端口4444。即可实现代理上网。
在客户端执行以下命令。从客户端本地转发至跳板主机2222端口(命令中localhost表示相对于跳板主机而言的localhost):
ssh -L 1111:localhost:2222 userA@跳板主机A
登录跳板主机A,然后再跳板主机A上执行以下命令。从跳板主机A的2222端口通过跳板主机B转发至目的主机:
ssh -L 2222:目的主机:目的主机端口 userB@跳板主机B
以上两层转发的链路为:
客户端1111端口→(通过ssl)跳板主机A的2222端口→(通过ssl)跳板主机B→目的主机
最终效果就是:访问客户端1111端口,实现访问目的主机。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。