SSH 隧道功能详细文档
版本: v2.0.0
更新日期: 2026-05-20
实现方式: ssh2库(支持密码和私钥认证)
📋 目录
功能概述
什么是SSH隧道?
SSH隧道(SSH Tunneling)也称为SSH端口转发,是一种通过SSH协议在本地和远程服务器之间建立加密通道的技术。
应用场景
-
连接防火墙后的数据库
- 数据库位于内网,无法直接访问
- 通过跳板机(Bastion Host)访问内网MongoDB
-
加密不安全的网络连接
- 在公网环境下安全访问MongoDB
- 防止数据传输被窃听
-
统一安全访问入口
- 所有数据库访问都通过SSH隧道
- 集中管理访问权限
工作原理
快速开始
1. 安装依赖
ssh2 已随 monsqlize 默认安装(v2.0.2+)。如需使用 SSH 隧道,直接安装 monsqlize 后可直接启用,通常无需额外执行依赖安装。
2. 基础配置(密码认证)
3. 基础配置(私钥认证,推荐)
配置说明
SSH配置项
MongoDB配置项
自动解析规则:
- ✅ 推荐:只配置
uri,系统会自动从URI中解析remoteHost和remotePort - ⚠️ 特殊情况:如果URI中的地址与实际MongoDB服务器地址不同,才需要显式指定
示例对比:
使用示例
示例1:密码认证(简单测试)
示例2:私钥认证(推荐生产环境)
示例3:使用私钥内容
示例4:使用加密私钥
示例5:指定本地端口
示例6:自定义SSH端口
示例7:调整超时设置
故障排查
问题1:SSH连接超时
错误信息:
可能原因:
- SSH服务器地址错误或无法访问
- SSH端口被防火墙阻止
- 网络不稳定
解决方案:
问题2:SSH认证失败
错误信息:
可能原因:
- 用户名或密码错误
- 私钥路径错误或权限不正确
- SSH服务器不允许该认证方式
解决方案:
问题3:MongoDB连接失败
错误信息:
可能原因:
- MongoDB地址或端口错误
- MongoDB认证失败
- MongoDB服务未运行
解决方案:
问题4:端口冲突
错误信息:
解决方案:
最佳实践
1. 使用私钥认证
✅ 推荐:
❌ 不推荐:
2. 使用环境变量存储敏感信息
3. 正确管理SSH密钥
4. 连接池和超时配置
5. 错误处理
6. 日志记录
常见问题
Q1: SSH隧道是否影响性能?
A: 有轻微影响,但通常可忽略不计。
- SSH隧道建立时间:2-5秒
- 数据传输性能损失:<5%(加密开销)
- 适用于大部分应用场景
Q2: 是否支持多个SSH隧道?
A: 支持。每个MonSQLize实例可以建立独立的SSH隧道。
Q3: SSH隧道断开后会自动重连吗?
A: 不会。需要手动重连。
建议实现重连逻辑:
Q4: 是否支持跳板机链(多级SSH)?
A: 不直接支持。需要在SSH服务器上配置ProxyJump。
SSH配置示例(~/.ssh/config):
Q5: Windows上是否支持SSH隧道?
A: 完全支持。monSQLize使用ssh2库(纯JavaScript实现),无需系统SSH客户端。
Q6: 密码认证和私钥认证哪个更好?
A: 私钥认证更安全且推荐。
相关文档
文档版本: v2.0.0
最后更新: 2026-05-20