如何通过已配置的SSH堡垒机在DBeaver中连接RDS Postgres?
解决DBeaver通过SSH堡垒机连接RDS Postgres的问题
问题背景
已完成RDS的SSH堡垒机搭建,终端手动执行以下命令可正常建立隧道并连接RDS:
连接堡垒机:
ssh -i ~/.ssh/cdk-ssh-bastion-rds -l ec2-user public-ip-address
建立端口转发:
ssh -i ~/.ssh/cdk-ssh-bastion-rds -f -N -L 1080:rds-instance.us-east-1.rds.amazonaws.com:5432 ec2-user@public-ip-address -v
但直接通过DBeaver的SSH配置页设置隧道时连接失败,已尝试在堡垒机/etc/ssh/sshd_config中开启PubkeyAuthentication yes并重启sshd,问题仍存在。需要实现无需手动建隧道,仅通过DBeaver+密钥对让Mac/Windows用户直接连接的方案。
排查与解决步骤
1. 修正DBeaver SSH配置细节
确保DBeaver的配置和手动命令完全匹配,重点检查:
- 密钥文件路径:Mac使用绝对路径(如
/Users/xxx/.ssh/cdk-ssh-bastion-rds),Windows避免用相对路径,直接选择密钥文件所在的绝对路径(注意不要用记事本编辑密钥,防止引入多余换行符) - SSH基本信息:堡垒机主机填公网IP,端口默认22,用户名
ec2-user,认证方式选「密钥文件」并选中本地的密钥 - 端口转发配置:在「SSH」标签的「端口转发」子页添加规则:
- 本地端口:1080(和手动命令一致)
- 目标主机:
rds-instance.us-east-1.rds.amazonaws.com(RDS完整端点) - 目标端口:5432
- 主连接页配置:主机填
localhost,端口填1080,其余填RDS的数据库名、用户名和密码
2. 检查堡垒机SSH权限与配置
除了PubkeyAuthentication yes,还要确保以下配置正确:
- 堡垒机
ec2-user的.ssh目录权限为700,authorized_keys文件权限为600,执行命令修复:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - 确认
sshd_config中AllowUsers未限制ec2-user登录(如果配置了该选项,需包含ec2-user) - 重启sshd服务:
sudo systemctl restart sshd
3. 修正本地密钥文件权限
- Mac/Linux:密钥文件权限必须为
600,否则SSH会拒绝使用,执行:chmod 600 ~/.ssh/cdk-ssh-bastion-rds - Windows:右键密钥文件→属性→安全→高级,删除所有非当前用户的权限,仅保留当前用户的「读取」权限(Windows SSH客户端会拒绝权限过宽的密钥)
4. 排查DBeaver SSH客户端设置
DBeaver默认可能使用内置SSH客户端,若仍失败:
- 打开DBeaver设置→连接→SSH,选择「使用系统SSH客户端」
- 确保系统SSH客户端(Mac的Terminal、Windows的PowerShell/WSL)能正常连接堡垒机(手动命令已验证,此步可快速定位是否为DBeaver内置客户端问题)
5. 查看DBeaver诊断日志定位错误
若以上步骤仍失败,打开DBeaver→帮助→诊断日志,搜索「SSH」或「tunnel」相关错误信息,比如:
- 密钥认证失败:检查密钥路径、权限或堡垒机
authorized_keys是否包含对应公钥 - 端口转发失败:确认堡垒机安全组允许22端口、RDS安全组允许堡垒机私有IP访问5432端口
内容的提问来源于stack exchange,提问作者Tsar Bomba
相关产品推荐
相关产品推荐

