如何连接远程mongodb与pymongo

Вол*_*нко 8 python ssh mongodb pymongo python-3.x

当我使用MongoChef连接远程mongo数据库时,我使用下一个参数:


服务器

  • 服务器: localhost
  • 港口: 27017

SSH隧道

  • SSH地址: 10.1.0.90

  • 港口: 25

  • SSH用户:用户名

  • SSH密码:密码


当我与Pymongo连接时,我有下一个代码:

import pymongo

MONGO_HOST = "10.1.0.90"
MONGO_PORT = 25
MONGO_DB = "db_name"
MONGO_USER = "username"
MONGO_PASS = "password"

con = pymongo.MongoClient(MONGO_HOST, MONGO_PORT)
db = con[MONGO_DB]
db.authenticate(MONGO_USER, MONGO_PASS)

print(db)
Run Code Online (Sandbox Code Playgroud)

但我有下一个错误:

pymongo.errors.ServerSelectionTimeoutError: 10.1.2.84:27017: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

拜托,你能帮帮我解决这个问题吗?我该怎么办?

Вол*_*нко 20

适合我的解决方案.

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]
pprint.pprint(db.collection_names())

server.stop()
Run Code Online (Sandbox Code Playgroud)