不是必须,但绝大多数公有云rds默认禁止公网直连,仅开放内网访问;navicat本地连接需通过ssh隧道借ecs跳板,此时“常规”选项卡主机应填localhost或127.0.0.1,而非rds内网地址。

Navicat 17 连接云 RDS 必须走 SSH 吗?
不是必须,但绝大多数公有云(阿里云、腾讯云、华为云)的 SQL Server RDS 默认**禁止公网直连**,只开放内网访问权限。所以你本地 Navicat 无法直接填 RDS 的公网地址+1433 端口——会提示 Connection refused 或超时。SSH 隧道是绕过这个限制的主流且安全的做法,本质是借一台能访问 RDS 内网的云主机(ECS/跳板机)中转。
“主机名/IP地址”填 localhost 还是 RDS 内网地址?
填 localhost 或 127.0.0.1,不是 RDS 的内网地址。
原因:SSH 隧道建立后,Navicat 实际是“登录到了跳板机内部”,再从跳板机本地发起数据库连接。SQL Server 在跳板机上监听的是 127.0.0.1:1433(或你配置的端口),而 RDS 的内网地址(如 rm-xxx.sqlserver.rds.aliyuncs.com)是跳板机自己要连的目标,不是 Navicat 直连的目标。
常见错误:
- 在“常规”选项卡里填了 RDS 的内网域名 → 报错
Unknown host(Navicat 本地解析不了该域名) - 填了跳板机的公网 IP → 报错
Connection timeout(跳板机默认不监听外网 1433)
SQL Server + SSH 隧道的关键配置项
Navicat 17 的 SSH 设置和 MySQL 基本一致,但 SQL Server 有几个易忽略点:
-
端口:SSH 隧道页填跳板机的 SSH 端口(默认22);“常规”页填 SQL Server 实际监听端口(默认1433,注意确认 RDS 控制台是否改过) -
用户名:“SSH”页填跳板机系统用户(如root或ubuntu);“常规”页填 SQL Server 登录名(如sa或自建账号) -
认证方式:优先用私钥(公钥认证)。若用密码,确保跳板机允许密码登录(PermitRootLogin yes/PasswordAuthentication yes) -
驱动兼容性:Navicat 17 自带 SQL Server 驱动,但若测试连接报Unable to load JDBC driver,需手动安装 Microsoft JDBC Driver 并在 Navicat 设置中指定路径
为什么测试连接成功却看不到数据库列表?
大概率是 SQL Server 登录用户的权限不足,而非连接问题。
SSH 隧道只解决网络可达性,不解决数据库权限。你需要确认该账号至少具备:
- 对目标数据库的
CONNECT权限 - 对
master数据库的VIEW ANY DATABASE权限(否则 Navicat 列不出所有 DB) - 如果是用
sa账号仍看不到,检查 SQL Server 是否启用“SQL Server 和 Windows 身份验证模式”(仅 Windows 模式下 sa 无效)
另外,Navicat 17 的“对象浏览器”默认只展开当前登录数据库。右键连接 → “连接属性” → “高级” → 勾选 显示所有数据库 才能看到全部库。











