AWS跳板机与EC2实例使用不同SSH密钥的连接配置问题
解决方案
1. 前置权限检查
SSH要求私钥文件必须仅当前用户可读,否则会直接拒绝认证,先执行以下命令修正权限:
- 跳板机密钥权限修正:
chmod 600 ~/.ssh/id_rsa - 目标EC2实例密钥权限修正:
chmod 600 ~/mykey.pem
同时确认mykey.pem对应的公钥已写入目标EC2实例中ec2-user用户的~/.ssh/authorized_keys文件内。
2. 正确SSH配置写法
你原有bastion主机的配置无需修改,保持如下即可:
host bastion Hostname <bastion_public_ip> IdentityFile ~/.ssh/id_rsa User ubuntu
目标EC2实例test-ec2的配置分两种场景选择:
场景1:OpenSSH 7.3及以上版本(推荐)
使用更简洁的ProxyJump参数,配置如下:
host test-ec2 Hostname <ec2_private_ip> IdentityFile ~/mykey.pem User ec2-user ProxyJump bastion
场景2:旧版本OpenSSH兼容
沿用ProxyCommand写法,配置如下即可:
host test-ec2 Hostname <ec2_private_ip> IdentityFile ~/mykey.pem User ec2-user ProxyCommand ssh -W %h:%p bastion
3. 配置说明
SSH会按主机配置块独立读取参数:
- 连接跳板机时自动调用
bastion块的~/.ssh/id_rsa密钥完成认证 - 连接目标EC2实例时自动调用
test-ec2块的~/mykey.pem密钥完成认证
二者认证流程完全独立,不会互相干扰。
配置完成后直接执行ssh test-ec2即可完成跳转连接。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

