通过AWS SSM登录EC2实例后,如何SSH访问无SSM的其他EC2实例?
解决从SSM登录的Host A访问私有Host B的密钥传输问题
方法1:用AWS CLI的SSM文件传输命令
直接在本地终端执行以下命令,把本地的PEM文件传到Host A:
aws ssm send-file --file /本地路径/your-key.pem --instance-id HostA的实例ID --destination /home/ec2-user/your-key.pem
传输完成后,在Host A的会话里修改密钥权限:
chmod 600 ~/your-key.pem
之后就能用这个密钥登录Host B:
ssh -i ~/your-key.pem ec2-user@HostB的私有IP
方法2:通过SSM端口转发+SCP传输
- 先在本地终端启动SSM端口转发,把本地的2222端口映射到Host A的22端口:
aws ssm start-session --target HostA的实例ID --document-name AWS-StartPortForwardingSession --parameters '{"portNumber": ["22"], "localPortNumber": ["2222"]}'
- 新开一个本地终端,用SCP把PEM文件传到Host A:
scp -P 2222 /本地路径/your-key.pem ec2-user@localhost:/home/ec2-user/your-key.pem
- 回到Host A的SSM会话,修改密钥权限后即可SSH到Host B,步骤同方法1。
方法3:直接在SSM会话中创建密钥文件
- 本地打开你的PEM文件,复制所有内容(包括
-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----)。 - 在Host A的SSM会话中,用vim创建密钥文件:
vim ~/your-key.pem
- 按
i进入编辑模式,粘贴刚才复制的内容,按Esc后输入:wq保存退出。 - 修改文件权限:
chmod 600 ~/your-key.pem
之后就能正常SSH到Host B了。
注意:所有方法完成后,都要确保PEM文件的权限是600,否则SSH客户端会拒绝使用该密钥。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

