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

能否在无PEM文件的情况下通过AWS CLI向Amazon EC2传输本地文件

无PEM通过AWS CLI实现EC2文件传输的方法

完全可以依托AWS Systems Manager(SSM)的能力实现,全程不需要单独持有EC2对应的PEM私钥,鉴权完全由本地AWS CLI配置的IAM权限完成,适配你当前的实例管理模式。

前置准备

  • 目标EC2实例已经关联具备SSM访问权限的IAM角色(至少绑定AmazonSSMManagedInstanceCore托管策略),且实例上的SSM Agent处于正常运行状态(Ubuntu系列官方AMI默认预装该组件,一般无需手动部署)
  • 本地Ubuntu 20.10环境已完成AWS CLI的凭证配置,可正常调用对应账号的SSM接口
  • 本地安装Session Manager插件(AWS CLI调用SSM会话能力的必要依赖)

可直接使用的操作方式

方式一:走SSM通道的兼容scp传输

最贴合你原有scp的使用习惯,不需要额外转存文件,命令格式如下:
scp -o ProxyCommand="aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" /本地源文件路径 ubuntu@<EC2实例ID>:/EC2上的目标存储路径

  • 鉴权完全依托本地AWS CLI的配置,不需要任何PEM文件
  • 不需要实例开放公网IP、不需要在安全组放行22端口,只要实例能连通SSM服务端点即可完成传输

方式二:配合S3中转的大文件传输

适合传输体积较大的文件,稳定性更高,全流程都通过AWS CLI完成,不需要额外登录实例操作:

  1. 本地将源文件上传到和EC2同区域的S3存储桶
    aws s3 cp /本地源文件路径 s3://<你的S3存储桶名称>/临时存储目录/
  2. 通过SSM下发执行命令,让EC2实例主动从S3拉取文件到目标路径
    aws ssm send-command --instance-ids <EC2实例ID> --document-name "AWS-RunShellScript" --parameters "commands=aws s3 cp s3://<你的S3存储桶名称>/临时存储目录/文件名 /EC2本地目标路径/" --output text

方式三:小文件的快速直传

对于几KB大小的小型配置文件,不需要走通道中转,直接把文件内容base64编码后,通过SSM命令在实例端解码写入即可:
aws ssm send-command --instance-ids <EC2实例ID> --document-name "AWS-RunShellScript" --parameters "commands=echo <base64编码的文件内容> | base64 -d > /EC2上的目标文件路径" --output text
该方法受单条SSM命令的参数长度限制,不适合传输大体积文件。

内容的提问来源于stack exchange,提问作者Aman Mohandas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 03:15:01