PHP 脚本到 MySQL 的 SSH 隧道

PHP 脚本到 MySQL 的 SSH 隧道

我需要建立一个 SSH 隧道,以便我的本地 PHP 脚本可以连接到远程服务器上的 MySQL 服务器。

Remote machine: MySQL (127.0.0.1:3306) on Linux (SSH port 44422)
Local machine: Linux (Debian Squeeze)

问题是它不允许我使用此命令连接:

ssh -oPort=44422 user@ip_address

如何建立 SSH 隧道以便我的 PHP 脚本可以连接到远程 MySQL?

(如果您认为其他连接方法(例如通过 PHP 脚本建立 SSH 隧道)更好,请告诉我。)

提前致谢!


编辑:我忘了提及 SSH 有一个单独的用户名/密码,而 MySQL 有另一个用户名/密码。

答案1

不完全回答你的问题(h3rrmiller 已经给了你一个很好的答案),但我建议不要这样做。当您的 ssh 连接中断时,这将中断所有 mysql 连接,并且只有在您建立新的 ssh 连接时才能重新建立它们。

如果您这样做是为了加密 mysql 流量:mysql 也支持 SSL 连接,那么这是一个更好的选择。

答案2

您需要为此创建一个转发 ssh 隧道

ssh user@ip -p 44422 -L3306:127.0.0.1:3306

然后将你的mysql查询指向127.0.0.1:3306

或者,如果您已经与远程主机建立 ssh 会话,则可以~C打开 ssh shell,然后键入-L3306:127.0.0.1:3306并按回车键将隧道添加到您的会话

你所有的 mysql 连接都将依赖于你的 ssh 会话保持活动状态,所以我会研究一个更持久的解决方案,比如 SSL。

相关内容