SSH端口转发(隧道)


2017-11-10 09:28
zpq
64

SSH端口转发(Port Forwarding),是一种隧道技术,流往某端口的数据被加密后传向另一机器,依据转发方式的不同,有多种应用场景。

以下所有的命令都是用SSH客户端执行的。执行命令的电脑下面称为“本地”电脑;而“远程服务器”则是运行着SSH服务器的机器(本文以my-remote-host.com为例)。

本地转发

有时,远程机器能访问某个端口(如remote-secret.com:8080),但本地机器无法访问。这时使用SSH的本地转发功能,即可将远程端口映射到本地:

ssh -L 9090:remote-secret.com:8080 my-remote-host.com

此时访问本地的9090端口就相当于用远程服务器my-remote-host.com访问remote-secret.com:8080

如果写成-L 9090: localhost:8080,就是把远程服务器的8080端口映射到本地的9090端口了

应用举例:如果远程服务器处于某受保护的内网中,可以借助其SSH服务获得与其等同的访问权限。

默认情况下,本地转发的端口只能在本机上访问,要想允许外部访问,请添加-g选项。

##远程转发
动态转发动态地将各种数据转发到远程端口。实际上相当于在本地电脑的指定端口开了一个SOCKS代理。如:

ssh -D 9090 my-remote-host.com

本地的9090端口就是一个SOCKS代理了。

如果my-remote-host.com是境外服务器,则该SOCKS代理实际上具备了“翻墙”功能。

##常用参数
端口转发常与以下参数配合使用:

-f
ssh将在后台运行
-N
不执行命令,仅转发端口
-C
压缩传送的数据
-i
使用指定的密钥登录

声明:本站文章版权归原作者及原出处所有