# 数据库远程管理(Navicat SSH 隧道) > RDS 白名单仅开放服务器 `47.98.203.17`,任何设备需通过 SSH 隧道访问数据库,无需开放公网 IP,安全可控。 --- ## 原理 ``` 本机 Navicat ──SSH加密隧道──▶ 47.98.203.17 ──内网──▶ RDS MySQL ``` --- ## 数据库与 RDS 实例对应关系 | 数据库 | RDS 主机 | |--------|---------| | `agent_db`、`agent_db_temp`、`game_field`、`youlehudong` | `rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com` | | `game_db`、`grade_db` | `rm-bp1749tfxu2rpq670lo.mysql.rds.aliyuncs.com` | --- ## Navicat 连接配置(以 agent_db 为例) ### 第一步:SSH 标签页 | 字段 | 值 | |------|----| | 使用 SSH 通道 | ✅ 勾选 | | 主机 | `47.98.203.17` | | 端口 | `22` | | 用户名 | `root` | | 验证方法 | **公钥** | | 私钥文件 | `C:\Users\{你的用户名}\.ssh\id_ed25519` | > **注意**:当前服务器已授权的密钥为 `id_ed25519`(标识 `youle-deploy`),选错密钥会导致认证失败。 ### 第二步:常规标签页 | 字段 | 值 | |------|----| | 主机名/IP | `rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com` | | 端口 | `3306` | | 用户名 | `games` | | 密码 | `Games0791!!` | | 数据库 | `agent_db`(可留空后再选) | > ⚠️ **常见错误(2013 错误)**:常规标签的主机名填了 `127.0.0.1` 或 `localhost`,会连接到服务器本机而非 RDS,导致握手失败。必须填 RDS 完整域名。 --- ## 新设备接入 在新设备上执行以下步骤: ```powershell # 1. 生成密钥对(如没有) ssh-keygen -t ed25519 -C "设备标识备注" # 2. 查看公钥内容 Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" ``` 将公钥内容追加到服务器: ```bash ssh root@47.98.203.17 "echo 'ssh-ed25519 AAAA...你的公钥内容...' >> ~/.ssh/authorized_keys" ``` 之后 Navicat SSH 标签填写该设备的私钥路径即可。 --- ## 命令行手动隧道(可选) 如需在命令行工具(如 mysql CLI)中使用,可手动建立隧道: ```bash # 建立隧道(保持此终端运行,另开终端连接) ssh -L 3307:rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com:3306 root@47.98.203.17 -N # 另开终端,连接本地转发端口 mysql -h 127.0.0.1 -P 3307 -u games -p agent_db ```