You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CDK v2搭建堡垒机访问RDS遇SSH重连失败、psql超时问题

AWS CDK v2堡垒机+RDS连接问题解决方案

问题1:EC2 Instance Connect重复连接权限拒绝

  • 原因:EC2 Instance Connect推送的公钥仅在实例中保留60秒,会话结束后会被系统自动清理,再次连接时无有效认证密钥。
  • 解决方法:
    1. 自动推送公钥并连接(推荐,符合安全模型):
      编写shell脚本简化操作,保存为connect-bastion.sh:
      # 替换为你的实例ID、区域和密钥路径
      INSTANCE_ID="i-xxxxxx"
      REGION="us-east-1"
      KEY_PATH="~/.ssh/id_rsa"
      
      aws ec2-instance-connect send-ssh-public-key \
          --instance-id $INSTANCE_ID \
          --instance-os-user ec2-user \
          --ssh-public-key file://${KEY_PATH}.pub \
          --region $REGION && \
      ssh -i $KEY_PATH ec2-user@$INSTANCE_ID
      
      赋予执行权限:chmod +x connect-bastion.sh,每次运行脚本即可直接连接。
    2. 持久化密钥(谨慎使用,降低临时密钥安全性):
      登录堡垒机后,修改定时任务并添加永久公钥:
      # 注释清理公钥的定时任务
      sudo sed -i '/ec2-instance-connect/d' /etc/cron.d/ec2-instance-connect
      # 添加你的公钥到authorized_keys
      echo "你的公钥内容" >> /home/ec2-user/.ssh/authorized_keys
      # 修复权限
      chmod 700 /home/ec2-user/.ssh
      chmod 600 /home/ec2-user/.ssh/authorized_keys
      chown ec2-user:ec2-user /home/ec2-user/.ssh /home/ec2-user/.ssh/authorized_keys
      

问题2:SSH端口转发绑定失败&psql连接超时

绑定端口失败处理

  • 本地22端口是特权端口,普通用户无法绑定,替换为非特权端口(如5432,对应PostgreSQL默认端口),转发命令示例:
    # 替换为堡垒机IP、RDS端点
    ssh -i ~/.ssh/id_rsa -L 5432:your-rds-endpoint.rds.amazonaws.com:5432 ec2-user@bastion-public-ip
    
  • 若必须使用22端口,需用sudo执行命令,但不推荐。

psql超时处理

  1. 验证堡垒机到RDS的连通性:
    登录堡垒机后执行:
    nc -zv your-rds-endpoint.rds.amazonaws.com 5432
    
    • 若不通:检查RDS安全组,确保允许堡垒机所在安全组的流量访问5432端口;同时确认堡垒机安全组允许出站到RDS的5432端口。
  2. 检查CDK网络配置:
    • 确保堡垒机与RDS在同一VPC内,或VPC间有正确的路由/对等连接。
    • 确认RDS的publicly_accessible设为false,仅允许VPC内资源访问。
  3. 本地psql连接命令:
    端口转发成功后,使用本地端口连接:
    psql -h localhost -p 5432 -U rds-username -d db-name
    

内容的提问来源于stack exchange,提问作者Tsar Bomba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:33:30