SSH隧道(即SSH代理、端口转发),接触过Linux系统的都知道SSH,对于SSH隧道,如果之前没接触过,只知道这个概念、网上搜索这方面的资料的话,网上的资料把简单的问题复杂化了,写的很复杂很繁琐。
下面自己把简单介绍下SSH隧道及SSH隧道实际应用总结一下。
SSH隧道几个实际应用
一、为了安全,mysql root用户只本机登录,在没有授权访问情况下,网络连接mysql数据库。
环境:
主机:192.168.0.104
服务:mysql,root只运行本机登录
使用plink工具
plink.exe下载地址:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://putty.cs.utah.edu/download.html
windows命令行进入plink.exe目录,运行命令(访问中不要关闭会话)
plink -L 3306:localhost:3306 root@192.168.1.104
# 本机端口:目标主机:目标端口 隧道主机
输入root密码(普通用户也可)后,打开数据库连接工具访问本机3306端口便可访问数据库了
使用数据库连接工具,比如Navicat
1、如图配置SSH隧道
2、配置数据库连接信息
这时便可以连接上数据库了。
二、数据库主机没有外网ip,外网如何连接数据库
环境:
mysql:10.0.0.10
ssh主机:内网:10.0.0.1,外网:123.1.1.71
(方案一:搭建VPN,通过VPN连接数据库
方案二:配置代理,如在ssh主机上配置Nginx代理,通过Nginx访问数据库)
而这里通过SSH隧道就可以轻松访问数据库,只需要ssh主机普通用户即可,无需服务器多余配置
plink工具
plink -L 3306:10.0.0.10:3306 fgf@123.1.1.71
数据库连接工具Navicat
三、一台外网主机,多台内网主机,如何方便登录内网主机
如上二的环境,ssh登录mysql主机需要ssh主机跳转,每次手动输入密码太麻烦,如何能像记住外网密码那样,记住内网密码?
SecureCRT
1、新建一个ssh会话,配置SSH主机登录信息(和正常一样)
2、配置SSH隧道
3、保持ssh隧道会话连接,SecureCRT在新建一个ssh会话访问本机22端口,便可以ssh访问mysql主机
Xmanager 5
1、新建SSH隧道会话
2、保持ssh隧道会话连接,在新建一个ssh会话访问本机22端口,便可以ssh访问mysql主机
SSH/plink命令的基本资料:
ssh -C -f -N -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -D listen_port user@Tunnel_Host
相关参数的解释:
-L port:host:hostport #建立本地SSH隧道(本地客户端建立监听端口)
将本地机(客户机)的某个端口转发到远端指定机器的指定端口.
-R port:host:hostport #建立远程SSH隧道(隧道服务端建立监听端口)
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.
# 有本地映射肯定有远程映射,就是把-L换成-R,这样我们访问远程主机的端口就相当于访问本地的端口,但感觉作用不大。
-D port
指定一个本地机器 “动态的’’ 应用程序端口转发.
-C 压缩数据传输。
-N Do not execute a shell or command.
不执行脚本或命令,仅仅做端口转发。通常与-f连用。
-f Fork into background after authentication.
后台认证用户/密码,不用登录到远程主机。
有话要说