Cuando uso MongoChef para conectar la base de datos mongo remota, uso los siguientes parámetros:
Servidor
Túnel SSH
Dirección SSH: 10.1.0.90
Puerto: 25
Nombre de usuario SSH: nombre de usuario
Contraseña SSH: contraseña
Cuando me conecto con Pymongo, tengo el siguiente código:
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)Pero tengo el siguiente error:
pymongo.errors.ServerSelectionTimeoutError: 10.1.2.84:27017: [Errno 111] Connection refusedPor favor, ¿podrían ayudarme con este problema? ¿Qué hice mal?
La solución que funciona para mí.
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()O bien, podría simplemente pip install ssh-pymongo :
from ssh_pymongo import MongoSession session = MongoSession('10.1.0.90', port=25, user='USERNAME', password='PASSWORD', uri='mongodb://127.0.0.1:27017' ) db = session.connection['DATABASE_NAME'] print(db) session.stop()Más ejemplos del paquete:
from ssh_pymongo import MongoSession session = MongoSession('db.example.com') db = session.connection['db-name'] from ssh_pymongo import MongoSession session = MongoSession('db.example.com', uri='mongodb://user:password@127.0.0.1/?authSource=admin&authMechanism=SCRAM-SHA-256') db = session.connection['db-name'] from ssh_pymongo import MongoSession session = MongoSession( host='db.example.com', port=21, user='myuser', key='/home/myplace/.ssh/id_rsa2' ) db = session.connection['db-name']Esto me ayudó a conectar pymongo con la base de datos mLab en python:
from pymongo import MongoClient MONGO_HOST = "ds123456.mlab.com" MONGO_PORT = 23456 MONGO_DB = "db name" MONGO_USER = "Username" MONGO_PASS = "password" connection = MongoClient(MONGO_HOST, MONGO_PORT) db = connection[MONGO_DB] db.authenticate(MONGO_USER, MONGO_PASS)