从堡垒机连接私有EC2时权限被拒问题求助
解决堡垒机跳转私有EC2的SSH权限问题
问题根源
你用ssh -J成功是因为该命令默认会转发本地ssh-agent连接,堡垒机能直接调用Windows本地agent中的私钥访问私有EC2;但单独登录堡垒机再执行ssh时,默认未开启agent转发,堡垒机上无可用私钥,因此触发权限拒绝错误,附带的socket报错是由于agent转发通道未建立导致的。
具体解决方法
方法1:登录堡垒机时临时开启agent转发
登录堡垒机时添加-A参数,强制开启ssh-agent转发:
ssh -A ubuntu@ip-public
之后在堡垒机内执行ssh ubuntu@ip-private即可正常连接,此时堡垒机已能访问你Windows本地ssh-agent中的私钥。
方法2:修改堡垒机SSH配置实现永久生效
若不想每次登录都手动加参数,可修改堡垒机的sshd配置:
- 编辑配置文件:
sudo nano /etc/ssh/sshd_config
- 找到
AllowAgentForwarding参数,确保设置为:
AllowAgentForwarding yes
- 重启sshd服务使配置生效:
sudo systemctl restart sshd
后续从Windows登录堡垒机时,默认会自动开启agent转发(前提是本地ssh-agent正常运行且私钥已添加)。
方法3:Windows本地配置SSH Config简化操作
在Windows的%USERPROFILE%\.ssh\config文件(无则新建)中添加以下配置:
Host bastion HostName ip-public User ubuntu ForwardAgent yes Host private-ec2 HostName ip-private User ubuntu ProxyJump bastion
之后直接执行ssh private-ec2即可一键连接私有EC2,或执行ssh bastion登录堡垒机时自动开启agent转发。
验证步骤
登录堡垒机后,可通过以下命令确认agent转发是否生效:
- 执行
echo $SSH_AUTH_SOCK,有路径输出说明转发通道已建立 - 执行
ssh-add -l,能看到Windows本地添加的私钥列表,说明堡垒机已能访问私钥
内容的提问来源于stack exchange,提问作者hoq
相关产品推荐
相关产品推荐

