SSH隧道
1.ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
将本地端口转发到另一台服务器的端口
2.ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host将远程的端口访问 映射到本地的端口
3.ssh -C -f -N -g -D listen_port user@Tunnel_Host动态转发,根据协议判断远程连接的端口
-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。-L port:host:hostport
将本地机(客户机)的某个端口转发到远端或局域网内指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport-D port
指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.-C Enable compression.
压缩数据传输。-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
命令测试:
在centos下先关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动并且修改mysql远程访问的ip限制:
grant all privileges on *.* to 用户名 @"%" identified by "密码";
flush privileges; * 刷新刚才的内容*
执行ssh -C -f -N -g -L 3307:127.0.0.1:3306 root@120.78.158.231
将远程主机数据库3306端口转发到本地3307端口。
telnet测试3307端口
发现服务为mysql,说明端口转发成功,使用navicat 链接3307端口成功拉取表。
这样访问此台机器的3307端口,即可访问到另一台机器上的数据库,以此来访问内网数据库