【问题标题】:SSH using Pythondb using private keySSH 使用 Pythondb 使用私钥
【发布时间】:2013-02-07 10:08:04
【问题描述】:

我需要使用 Python SSH 进入数据库,为此我使用 PythonDB。我看到this 问题详细说明了如何执行此操作,但我似乎无法正确使用语法。有人能指出我正确的方向吗......?我还需要使用私钥,我该如何插入...?

ssh -L 9990:127.0.0.0:3396 <79.xxx.xx.xxx>

database = MySQLdb.connect(host'127.0.0.0', port=3306, user='jack', passwd='pass', db='test')

【问题讨论】:

  • 这和 SSH 有什么关系?您不能立即通过 SSH 连接到 MySQL 数据库吗?两个不同的东西,SSH == 安全远程外壳,MySQL == 数据库引擎.. 从这个意义上说,它们并没有真正一起工作。
  • 你读到的是两个系统一起工作。 第 1 步: SSH 进入机器。 步骤 2: 使用数据库连接执行脚本 步骤 1: 创建 SSH 隧道 步骤 2: 运行本地脚本,但无论建立什么连接,都是通过隧道建立的。
  • 嗨,对不起,我明白为什么我的问题令人困惑!所以我要做的是 Step1:使用私钥创建 SSH 隧道 Step2:在本地运行脚本 Step3:通过 SSH 连接写入 SQL 数据库。我虽然这是可能的......?
  • 有可能,打开一个 SSH 隧道(通过 putty)或者在示例中您通过 linux 中的 ssh 链接自己。然后告诉你希望隧道监听哪个 local 端口,以及你的连接应该使用哪个 remote 端口。 123 -&gt; 80 例如,如果您连接到 127.0.0.1:123,您将被路由到端口 80 上的 X 主机。这就是隧道的工作方式。它不是 Python 实现,而是隧道实现 :) 无论如何您在本地隧道端口上运行的脚本/sql 语句,将被路由到另一端定义的主机。

标签: python mysql ssh mysql-python


【解决方案1】:

正如在 ssh-tunnel 中对other question 的回答中所说,您正在从本地机器上的端口 9990 转发到删除机器上的(标准 mysql)端口。要通过该 ssh 隧道发送请求,您需要连接到端口 9990 而不是 3306:

database = MySQLdb.connect(host'127.0.0.0', port=9990, ....

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 2023-03-24
    • 2016-09-15
    • 2013-03-24
    • 2016-12-28
    • 2016-03-08
    • 2012-11-26
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多