使用AWS Systems Manager连接EC2时无法预览或下载文件的问题
问题排查与替代方案
一、SSM配置排查点
- SSM Agent版本验证:确认EC2实例上的SSM Agent为最新版本,旧版本可能存在功能兼容性问题。可在实例内执行对应系统的升级命令,比如Amazon Linux系统:
sudo amazon-linux-extras install -y amazon-ssm-agent。 - IAM角色权限检查:EC2实例关联的IAM角色需具备Session Manager及文件操作的必要权限,至少包含:
ssm:DescribeSessionsssm:GetConnectionStatusssm:StartSession- 若涉及S3中转,需添加
s3:GetObject和s3:PutObject权限
- 网络连通性确认:确保EC2实例能访问SSM服务的区域终端节点,可通过
telnet ssm.<你的区域>.amazonaws.com 443测试连通性。私有子网实例需配置VPC终端节点或NAT网关。 - 本地Session Manager插件更新:本地设备需安装最新版Session Manager插件,旧插件可能导致文件传输、预览功能异常。
二、文件下载替代方法
1. 借助S3中转(Run Command方式)
在SSM控制台的Run Command中选择AWS-RunShellScript文档,执行命令将目标文件上传至S3桶,之后从S3下载到本地:
aws s3 cp /实例内文件路径 s3://你的S3桶名/存储路径/
前提:EC2实例IAM角色拥有s3:PutObject权限
2. 端口转发+SCP传输
在本地终端启动SSM端口转发会话,将实例SSH端口映射到本地,再用SCP下载文件:
# 启动端口转发,将实例22端口映射到本地2222端口 aws ssm start-session --target <EC2实例ID> --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["2222"]}'
打开新终端执行SCP命令:
scp -P 2222 ec2-user@localhost:/实例内文件路径 /本地存储路径/
前提:实例SSH服务正常运行,且IAM角色具备对应SSM权限
3. SSM会话内直接传输
在本地终端启动SSM交互式会话,使用内置的transfer命令下载文件:
# 启动SSM会话 aws ssm start-session --target <EC2实例ID> # 进入会话后执行传输命令 transfer get --source /实例内文件路径 --destination /本地存储路径/
内容的提问来源于stack exchange,提问作者Jainam
相关产品推荐
相关产品推荐

