ssh是日常使用最多的程序,但是大部分情况都只是用来做加密远程登录,实际上ssh实现的加密传输可以用在很多场景,比如scp就是利用了ssh的加密通道,实现文件的加密传输。 本文介绍一下使用ssh实现通用网络服务的加密传输
SSH端口转发分成:
本文介绍本地端口转发,其他两种下次再介绍
MySQL直连
MySQL连接,连接传输的是明文数据,容易被窃听,特别如果连接需要经过公网的情况下。
不过我们可以借助SSH构建的本地端口转发(又称SSH隧道),实现加密传输。如下图:
SSH端口转发
假设Server-A的IP为192.168.58.101
,Server-B的IP是192.168.58.103
在Server-B上执行如下命令:
ssh -f -N -L 9906:192.168.58.101:3306 192.168.58.101
上面的命令,就建立了本地端口转发(SSH隧道),Server-B发送到9906端口的所有数据都会被转发到192.168.58.101的3306端口
SSH隧道已经建立,可以往隧道发送数据,会自动转发到目的服务器和端口。
在Server-B(192.168.58.103
)上执行如下命令就可以建立到Server-A(192.168.58.101:3306
)的MySQL连接
mysql -h127.0.0.1 -P9906 -uroot -p