pymongo.errors.ServerSelectionTimeoutError:SSL 握手失败:本地主机:27017:[WinError 10054]

问题描述 投票:0回答:0

我正在尝试通过 ssh 隧道连接到 mongoclient。这是代码

import pymongo
from sshtunnel import SSHTunnelForwarder

with open("config.json") as f:
    config = json.load(f)

config_params = config["dev_db"]

# SSH server credentials
SSH_HOST = config_params['host_name']
SSH_PORT = 22
SSH_USER = config_params['host_username']
SSH_KEY = config_params['private_key']

# MongoDB server credentials
MONGO_HOST = config_params["db_uri"]
MONGO_PORT = 27017
params = config_params['params']

# Create an SSH tunnel
with SSHTunnelForwarder(
    (SSH_HOST, SSH_PORT),
    ssh_username=SSH_USER,
    ssh_pkey=SSH_KEY,
    remote_bind_address=(MONGO_HOST, MONGO_PORT),
    local_bind_address=('localhost', MONGO_PORT),
) as server:

    # Connect to MongoDB
    client = pymongo.MongoClient(
        'localhost',
        server.local_bind_port,
        username = params['username'],
        password=params['password'],
        tlsAllowInvalidCertificates=True,
        tls=True,
        tlsCAFile=params['tlsCAFile'],
        retryWrites=False
    )
    print(client)
    print(client.list_database_names())

证书是 100% 有效的。我可以通过 mongo Atlas 与他们联系,一切正常。 我还检查了 pems 是否可以从代码中获得,它们确实是。

Python 3.7 但我也试过 3.11。 Pymongo 4.3.3 和 sshtunnel 0.4。抱歉,我在 ChatGPT 的帮助下花了 12 个小时,我们都不知道:/

python ssh pymongo ssh-tunnel
© www.soinside.com 2019 - 2024. All rights reserved.