【问题标题】:Using SSHTunnelForwarder to connect to a MySQL db via SSH使用 SSHTunnelForwarder 通过 SSH 连接到 MySQL 数据库
【发布时间】:2016-10-25 03:08:42
【问题描述】:

我正在尝试在 python 中通过 ssh 连接到 mysql db,但出现错误。我将以下内容保存在 python 文件“forward.py”中。我的代码如下:

forward.py

from sshtunnel import SSHTunnelForwarder
import MySQLdb

with SSHTunnelForwarder(
      ('ssh_host', 22),
      ssh_password="ssh_password",
      ssh_username="ssh_username",
      remote_bind_address=('mysql_host', 3306)) as server:

     con = MySQLdb.connect(user='mysql_username',passwd='mysql_password',db='mysql_db_name',host='mysql_host',port=server.local_bind_port)

当我在终端运行 forward.py 时,我收到以下错误:

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on     
'mysql_host' (60)")

值得注意的是,这些值是硬编码的安全值,即“mysql_host”是一个实际的主机,我可以在运行时通过 ssh 访问它

ssh mysql_host

通过终端。我也可以使用具有相同值的 Sequel Pro 进行正常连接,如下所示:http://screencast.com/t/0niuWlMDb

谁能指出我正确的方向?提前致谢

【问题讨论】:

    标签: python mysql ssh mysql-python


    【解决方案1】:

    我认为您的问题在于您正在创建本地 SSH 隧道但尝试直接连接到远程主机,这违背了使用 SSH 隧道的目的。

    我相信,如果您将连接字符串从 host='mysql_host' 更改为 host='127.0.0.1',您将解决您的问题。

    如果您查看 Sequel Pro 实例的调试/连接设置,您将看到正在使用的实际连接命令,并希望确认是这种情况。

    更多关于 SSH 转发的参考资料: http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

    【讨论】:

      【解决方案2】:

      如果您使用 SSH 隧道转发,您需要连接到 'localhost:3306' 而不是实际的 'mysql-host:3306'。

      让我解释一下发生了什么:

      1. 您通过 SSH 与远程 mysql 主机建立连接
      2. 您的客户端设置隧道并在本地主机上侦听 TCP:3306:localhost:3306
      3. 到 localhost:3306 的任何流量都将通过您的 SSH 隧道透明地重定向到 mysql_host:3306。

      尝试在您的配置中使用“localhost:3306”。 看看here 的几个例子,它也可能对你有帮助。

      【讨论】:

        【解决方案3】:

        我认为问题在于您没有指定 local_bind_address。出于这个原因,隧道被分配到您的本地主机端口 60。无法从该端口连接到 MySQL。

        使用 SSHTunnelForwarder() 函数的 local_bind_address 参数指定 local_bind_address 端口。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 2020-04-16
          • 2010-12-30
          • 2018-09-26
          • 2012-06-04
          • 2014-09-17
          相关资源
          最近更新 更多