Questo ha funzionato per me. Ho controllato l'esempio di paramiko sopra ma non ho capito e ho trovato questo. Ho preso il codice da qui e modificato solo un po' per le mie esigenze.
def data_call(collection_name, query={}):
from sshtunnel import SSHTunnelForwarder
import pymongo
MONGO_HOST = 'HOST'
SERVER_USER = 'server_user'
PRIVATE_KEY ='pem.txt'
MONGO_USER='user_mongo'
MONGO_PASS ='pass_mongo'
MONGO_DB = "db"
# define ssh tunnel
server = SSHTunnelForwarder(
MONGO_HOST,
ssh_username=SERVER_USER,
ssh_pkey=PRIVATE_KEY,
remote_bind_address=('127.0.0.1', 27017)
)
# start ssh tunnel
server.start()
connection = pymongo.MongoClient('127.0.0.1', server.local_bind_port)
db = connection[MONGO_DB]
data = db[collection_name].find(query)
return data