我需要建立一个 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。