如何通过SSH连接远程服务器并访问内部MongoDB端口?
问题分析与解决方法
错误核心原因
你遇到的连接错误是因为混淆了SSH端口与MongoDB端口的配置:连接字符串里把MongoDB的目标端口设为了SSH服务的22端口,导致Studio 3T试图直接和SSH服务通信,而非通过SSH隧道连接服务器内部的MongoDB实例,从而触发消息长度不匹配的异常。
具体解决步骤
1. 修正Studio 3T连接配置
按以下逻辑重新配置连接:
- 常规配置页:
- 服务器地址填写
127.0.0.1,端口填写27017(这是SSH隧道映射到本地的端口,对应远程服务器内部的MongoDB端口)
- 服务器地址填写
- SSH配置页:
- 勾选「使用SSH隧道」
- SSH地址填远程服务器地址
example.com,端口填22 - 认证方式选「密码」,填入SSH用户名(如
root)和对应密码
- 修正后的连接字符串:
核心是将MongoDB的目标地址改为mongodb://127.0.0.1:27017/?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&3t.uriVersion=3&3t.connection.name=production&3t.ssh=true&3t.sshAddress=example.com&3t.sshPort=22&3t.sshAuthMode=password&3t.sshUser=root&3t.alwaysShowAuthDB=true&3t.alwaysShowDBFromUserRole=true127.0.0.1:27017,让SSH隧道把本地27017端口转发到远程服务器的127.0.0.1:27017。
2. 确认远程服务器配置有效性
- 你的Docker Compose配置是正确的:
"127.0.0.1:27017:27017"确保MongoDB仅绑定服务器本地回环地址,不会暴露到公网,符合你的安全需求。 - 确认远程服务器SSH服务正常运行,且使用的SSH用户(如
root)可通过密码正常登录。
3. 测试连接
完成配置后点击「测试连接」,Studio 3T会先建立SSH隧道,再通过隧道连接远程服务器内部的MongoDB实例,即可正常连接。
内容的提问来源于stack exchange,提问作者pizzaisdavid
相关产品推荐
相关产品推荐

