转载:http://blog.csdn.net/a351945755/article/details/21785647,http://blog.csdn.net/gaoming655/article/details/7231517,http://blog.aizhet.com/NET/12044.html,html
SSH 端口映射mysql
工做中常常会遇到一些服务器访问受限的问题:某些服务器只有私网ip地址,仅能经过内网ip链接,或如mysql服务器或登陆其它机器的ssh。linux
能够将远端服务器一个端口remote_port绑定到本地端口port,sql
一。 linuxubuntu
首先要记住一件事情就是:安全
SSH 端口转发天然须要 SSH 链接,而 SSH 链接是有方向的,从 SSH Client 到 SSH Server 。服务器
而咱们所要访问的应用也是有方向的,应用链接的方向也是从应用的 Client 端链接到应用的 Server 端。好比须要咱们要访问Internet上的Web站点时,Http应用的方向就是从咱们本身这台主机(Client)到远处的Web Server。ssh
若是SSH链接和应用的链接这两个链接的方向一致,那咱们就说它是本地转发。socket
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隧道之后,在远端服务器监听一个端口,全部访问远端服务器指定端口都会经过隧道传输到本地的对应端口上,下面是例子。
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端口访问转发到192.168.1.1的8080端口
ssh -C -f -N -g -L 80:192.168.1.1:8080 user@192.168.1.1
2. 将发往192.168.1.1的8080访问转发到本机的80端口
ssh -C -f -N -g -R 80:192.168.1.1:8080 user@192.168.1.1
(user为主机192.168.1.1上的用户)
-N - 不使用Shell窗口,纯作转发的时候用,若是你在映射完成后继续在服务器上输入命令,去掉这个参数便可
例子A:咱们想远程管理服务器上的MySQL,那么使用下面命令
ssh -L 3306:127.0.0.1:3306 user@emlog-vps -N
运行这个命令以后,ssh将会自动将服务器的3306映射到本机的3306端口,咱们就可使用任意MySQL客户端链接 localhost:3306便可访问到服务器上的MySQL了。
例子B:一次同时映射多个端口
ssh -L 8888:www.host.com:80 -L 110:mail.host.com:110 -L 25:mail.host.com:25 user@host -N
命令将自动把服务器的80,110,25端口分别映射到本机的8888,110和25端口
注:以上命令在ubuntu 9.10 上测试经过...
下一篇