SSH隧道解决方案 设置到MySQL数据库服务器的SSH隧道(最好是通过Jumpbox以获得安全性)。
(A)GUI工具 根据您的要求,您可以使用具有内置SSH隧道支持的GUI MySQL客户端(例如SequelPro),使用Visual Studio代码 转发端口/创建SSH隧道或使用PuTTY设置端口转发。
有一个名为Secure Pipes的macOS GUI ssh隧道工具,您可能也会发现它很有用。
(B)命令行 步骤1。
ssh -fNg -L 3307:10.3.1.55:3306 username@ssh-jumpbox.com 这里的关键是'-L'开关,它告诉ssh我们正在请求本地端口转发。我选择使用上面的端口3307。现在,本地计算机上定向到该端口的所有流量都将通过我的ssh客户端 “端口转发” 到在address主机上运行的ssh服务器ssh-jumpbox.com。10.3.1.55:3306在这种情况下,Jumpbox ssh服务器将代表您解密流量并建立与MySQL数据库服务器的网络连接。MySQL数据库服务器会看到来自Jumpbox内部网络地址的连接。
本地端口转发语法 语法有些棘手,但可以将其视为:
:: username@ssh_proxy_host.com 如果您对其他开关感兴趣,它们是:
-f(转到后台) -N(不执行远程命令) -g(允许远程主机连接到本地转发的端口)
私钥身份验证,在上面添加(-i)开关:
-i /路径/到/私钥
第2步。
告诉您的本地MySQL客户端通过您机器上的本地端口3307(-h 127.0.0.1)通过SSH隧道进行连接,该端口现在将通过您在步骤1中建立的SSH隧道转发发送给它的所有流量。
mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
现在,客户端和服务器之间的数据交换是通过加密的SSH连接发送的,并且是安全的。
注意: 我不建议直接通过隧道传输到您的数据库服务器-使数据库服务器可以直接从Internet访问是巨大的安全责任。将隧道目标地址设为Jumpbox / Bastion主机的Internet地址(请参阅步骤1中的示例),并将数据库目标为远程网络上数据库服务器的内部 IP地址。SSH将完成其余的工作。
第三步
现在,使用以下命令连接您的PHP应用程序:
来源:stack overflow