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

如何向未关联密钥对的EC2实例拷贝文件?

未绑定密钥对的EC2实例文件传输可行方案

以下是经过验证的3种常用实现路径,无需使用原有SSH密钥对即可完成文件传输:

方案1:使用AWS Systems Manager (SSM) 直接传输(最推荐)

无需实例开放22端口、无需公网IP,也不需要重启实例,是生产环境优先选择的方案。

前提条件

  • 目标EC2实例已安装SSM Agent(Amazon Linux 2/2023、Ubuntu 16.04+等AWS官方镜像默认预装,其他操作系统可手动部署)
  • 实例绑定的IAM角色已附加AmazonSSMManagedInstanceCore权限策略
  • 实例可正常访问SSM服务端点(有公网出口、或已在VPC内配置SSM私有端点均可)

操作步骤

  • 如果传输的文件体积较小,可直接使用AWS CLI v2的send-file命令,本地直接向实例推送文件:
    aws ssm send-file --instance-id <你的实例ID> --source ./本地文件路径 --destination /实例上的绝对存储路径 --region <实例所属区域>
  • 如果文件体积较大,可先将文件上传到同区域的S3存储桶,再通过SSM发送命令让实例拉取文件,注意需要给实例的IAM角色额外添加对应S3存储桶的读取权限:
    aws ssm send-command --document-name "AWS-RunShellScript" --instance-ids "<你的实例ID>" --parameters '{"commands":["aws s3 cp s3://<存储桶名称>/<文件路径> /实例上的目标存储路径"]}' --region <实例所属区域>
  • 可通过aws ssm list-command-invocations --command-id <上一步返回的CommandId> --details查看命令执行结果,确认文件传输状态。
    如果目标实例是Windows系统,只需将上述命令中的AWS-RunShellScript替换为AWS-RunPowerShellScript,调整对应路径格式即可。

方案2:临时绑定密钥对(适合允许短时间停机的场景)

如果是基于EBS卷的实例,且允许短暂停机,可直接为现有实例绑定新的密钥对,之后即可正常使用SCP传输:

  • 先停止目标EC2实例(停止操作不会删除实例本地数据,若使用临时公网IP,重启后公网IP会变更)
  • 在EC2控制台选中实例,依次点击「操作」-「安全」-「修改密钥对」,选择已有密钥对或新建密钥对后完成绑定
  • 启动实例后即可用新绑定的密钥对执行SCP/SFTP传输,文件传输完成后也可按需解绑密钥对。

方案3:通过用户数据传输小文件(适合16KB以内的小型文件/脚本)

如果仅需要传输小型配置文件、脚本等体积小于16KB的内容,可通过修改实例用户数据实现,无需额外配置权限:

  • 停止目标实例后,依次点击「操作」-「实例设置」-「编辑用户数据」
  • 将需要传输的文件内容做Base64编码后,写入用户数据的启动脚本,示例如下:
    #!/bin/bash
    echo "c2FtcGxlIGNvbnRlbnQK" | base64 -d > /opt/target.conf
    chmod 644 /opt/target.conf
    
  • 保存后启动实例,系统启动时会自动执行脚本,将解码后的内容写入指定路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:04