SSH远程端口映射

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SSH远程端⼝映射
SSH 端⼝映射
⼯作中经常会遇到⼀些服务器访问受限的问题:某些服务器只有私⽹ip地址,仅能通过内⽹ip连接,或如mysql服务器或登录其它机器的ssh。

可以将远端服务器⼀个端⼝remote_port绑定到本地端⼝port,
⼀。

linux
⾸先要记住⼀件事情就是:
SSH 端⼝转发⾃然需要 SSH 连接,⽽ SSH 连接是有⽅向的,从 SSH Client 到 SSH Server 。

⽽我们所要访问的应⽤也是有⽅向的,应⽤连接的⽅向也是从应⽤的 Client 端连接到应⽤的 Server 端。

⽐如需要我们要访问Internet上的Web站点时,Http应⽤的⽅向就是从我们⾃⼰这台主机(Client)到远处的Web Server。

如果SSH连接和应⽤的连接这两个连接的⽅向⼀致,那我们就说它是本地转发。

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
如果SSH连接和应⽤的连接这两个连接的⽅向不同,那我们就说它是远程转发。

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>
<PIC>
本地转发:
在本地这台机器上监听⼀个端⼝,然后所有访问这个端⼝的数据都会通过ssh 隧道传输到远端的对应端⼝上,下⾯是例⼦。

本地端⼝转发绑定的是 lookback 接⼝,这意味着只有 localhost 或者 127.0.0.1 才能使⽤本机的端⼝转发 , 其他机器发起的连接只会得到“connection refused. ”。

要想让其他机器也能共享这个隧道来转发的话需要在配置⽂件中使⽤GatewayPorts 关键字,或者直接命令⾏下使⽤"-g"参数。

另外本地转发命令中的 <remote host> 和 <SSH hostname> 可以是不同的主机。

<PIC>
远程转发与本地转发正好相反,打开ssh隧道以后,在远端服务器监听⼀个端⼝,所有访问远端服务器指定端⼝都会通过隧道传输到本地的对应端⼝上,下⾯是例⼦。

<PIC>
ssh的三个强⼤的端⼝转发命令:
转发到远端:ssh -C -f -N -g -L 本地端⼝:⽬标IP:⽬标端⼝⽤户名@⽬标IP
转发到本地:ssh -C -f -N -g –R 本地端⼝:⽬标IP:⽬标端⼝⽤户名@⽬标IP
ssh -C -f -N -g -D listen_port user@Tunnel_Host
其中
-C,是进⾏数据压缩。

-f,是后台认证⽤户/密码,通常和-N连⽤,不⽤登录到远程主机。

只有当提⽰⽤户名密码的时候才转向前台。

-N,是不执⾏远端命令,在只是端⼝转发时这条命令很有⽤处。

-g ,在-L/-R/-D参数中,是允许远端主机连接本地转发端⼝,如果不加这个参数,只允许本地主机建⽴连接。

-L,则是将本地端⼝映射到远端主机端⼝。

本地端⼝:⽬标IP:⽬标端⼝
将本地机(客户机)的某个端⼝转发到远端指定机器的指定端⼝。

⼯作原理:本地机器上分配了⼀个 socket 侦听 port 端⼝, ⼀旦这个端⼝上有连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的hostport 端⼝建⽴连接. 可以在配置⽂件中指定端⼝的转发。

只有 root 才能转发特权端⼝。

IPv6 地址⽤另⼀种格式说明: port/host/hostport
-R,表明是将远端主机端⼝映射到本地端⼝。

本地端⼝:⽬标IP:⽬标端⼝
将远程主机(服务器)的某个端⼝转发到本地端指定机器的指定端⼝
⼯作原理:远程主机上分配了⼀个 socket 侦听 port 端⼝, ⼀旦这个端⼝上有连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的hostport 端⼝建⽴连接. 可以在配置⽂件中指定端⼝的转发.。

只有⽤ root 登录远程主机才能转发特权端⼝.。

IPv6 地址⽤另⼀种格式说明: port/host/hostport
-p :被登录的ssd服务器的sshd服务端⼝。

-D port
指定⼀个本地机器 “动态的'’ 应⽤程序端⼝转发.。

⼯作原理:本地机器上分配了⼀个 socket 侦听 port 端⼝, ⼀旦这个端⼝上有了连接, 该连接就经过安全通道转发出去, 根据应⽤程序的协议可以判断出远程主机将和哪⾥连接.。

⽬前⽀持 SOCKS4 协议, 将充当 SOCKS4 服务器。

只有 root 才能转发特权端⼝,可以在配置⽂件中指定动态端⼝的转发。

应⽤举例
1. 将发往本机的80端⼝访问转发到19
2.168.1.1的8080端⼝
ssh -C -f -N -g -L 80:192.168.1.1:8080
2. 将发往192.168.1.1的8080访问转发到本机的80端⼝
ssh -C -f -N -g -R 80:192.168.1.1:8080
(user为主机192.168.1.1上的⽤户)
-N - 不使⽤Shell窗⼝,纯做转发的时候⽤,如果你在映射完成后继续在服务器上输⼊命令,去掉这个参数即可
例⼦A:我们想远程管理服务器上的MySQL,那么使⽤下⾯命令
ssh -L 3306:127.0.0.1:3306 -N
运⾏这个命令之后,ssh将会⾃动将服务器的3306映射到本机的3306端⼝,我们就可以使⽤任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。

例⼦B:⼀次同时映射多个端⼝
ssh -L 8888::80 -L 110::110 -L 25::25 user@host -N
命令将⾃动把服务器的80,110,25端⼝分别映射到本机的8888,110和25端⼝
注:以上命令在ubuntu 9.10 上测试通过...。

相关文档
最新文档