gpt4 book ai didi

django - sshtunnel.BaseSSHTunnelForwarder 无法与 SSH 网关建立 session

转载 作者:行者123 更新时间:2023-12-03 23:53:17 50 4
gpt4 key购买 nike

我正在使用 django 和 mysql 数据库来开发 api。现在我有了将 mongodb 数据库与 django 连接的新要求。我使用了以下解决方案

from sshtunnel import SSHTunnelForwarder
import pymongo
import pprint

MONGO_HOST = "REMOTE_IP_ADDRESS"
MONGO_DB = "DATABASE_NAME"
MONGO_USER = "LOGIN"
MONGO_PASS = "PASSWORD"

server = SSHTunnelForwarder(
MONGO_HOST,
ssh_username=MONGO_USER,
ssh_password=MONGO_PASS,
remote_bind_address=('127.0.0.1', 27017)
)

server.start()

client = pymongo.MongoClient('127.0.0.1', server.local_bind_port) #
server.local_bind_port is assigned local port
db = client[MONGO_DB]

现在我开始关注

sshtunnel.BaseSSHTunnelForwarderError:无法与 SSH 网关建立 session

在 django 项目中连接 mongodb 是个好方法吗?

最佳答案

我认为这与您连接它的方式无关。该消息意味着您的 SSH 配置中的某些内容不正确。
SSHTunnelForwarder应该使用 SSH 主机、端口、用户和密码进行实例化,因为您首先需要访问可以连接到 Mongo 主机的主机(运行 sshd 的地方)。我也没有看到您将 key 传递到何处进行身份验证。确保您定义了 <your-key-instance-here>根据您拥有的 key 类型(例如,使用 paramiko : paramiko.RSAKey.from_private_key_file('/path/to/your/ssh/key/file') 的 RSA 类型 key )。之后,您需要在客户端指定 Mongo 用户和密码:

@contextmanager
def _tunnel():
with SSHTunnelForwarder((ssh_host, 22),
ssh_username=SSH_USER,
ssh_pkey=<your-key-instance-here>,
remote_bind_address=(MONGO_HOST, MONGO_PORT)
) as tunneled_conn:
yield pymongo.MongoClient('mongodb://%s:%s@127.0.0.1' % (MONGO_USR, MONGO_PWD),
port=tunneled_conn.local_bind_port
)

然后在您的代码中将其用作


with _tunnel() as mongo_client:
...

关于django - sshtunnel.BaseSSHTunnelForwarder 无法与 SSH 网关建立 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984099/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com