无公网IPv4的AWS EC2实例:如何通过AWS CLI传输文件
无公网IPv4的AWS Linux实例通过AWS CLI实现文件传输
方法一:利用EC2 Instance Connect作为代理配合scp传输
既然你已经能通过aws ec2-instance-connect ssh命令连接实例,可以将该命令作为scp的代理,直接实现文件传输,无需公网IP。
本地文件上传至实例
scp -o ProxyCommand="aws ec2-instance-connect ssh --instance-id <INSTANCE_ID> --private-key-file <PATH_TO_PRIVATE_KEY> --connection-type eice --proxy-only" <LOCAL_FILE_PATH> <INSTANCE_USER>@<INSTANCE_PRIVATE_IP>:<REMOTE_TARGET_PATH>
- 替换
<INSTANCE_USER>为实例的系统用户(如ec2-user、ubuntu) <INSTANCE_PRIVATE_IP>为实例的私有IPv4地址
实例文件下载至本地
scp -o ProxyCommand="aws ec2-instance-connect ssh --instance-id <INSTANCE_ID> --private-key-file <PATH_TO_PRIVATE_KEY> --connection-type eice --proxy-only" <INSTANCE_USER>@<INSTANCE_PRIVATE_IP>:<REMOTE_FILE_PATH> <LOCAL_TARGET_PATH>
方法二:以AWS S3作为中转传输
如果实例可以访问S3(通过VPC端点或IAM角色赋予S3访问权限),可以借助S3作为中间存储实现文件传输:
本地→S3→实例
- 本地文件上传到S3:
aws s3 cp <LOCAL_FILE_PATH> s3://<YOUR_S3_BUCKET>/<FILE_NAME>
- 登录实例后,从S3下载文件:
aws s3 cp s3://<YOUR_S3_BUCKET>/<FILE_NAME> <REMOTE_TARGET_PATH>
实例→S3→本地
- 登录实例后,上传文件到S3:
aws s3 cp <REMOTE_FILE_PATH> s3://<YOUR_S3_BUCKET>/<FILE_NAME>
- 本地从S3下载文件:
aws s3 cp s3://<YOUR_S3_BUCKET>/<FILE_NAME> <LOCAL_TARGET_PATH>
注意事项
- 方法一需要确保本地AWS CLI拥有
ec2-instance-connect:SendSSHPublicKey等相关权限 - 方法二需要实例被赋予访问目标S3桶的IAM权限,若实例无公网IP,建议配置S3 VPC端点避免走公网流量
内容的提问来源于stack exchange,提问作者Revan
相关产品推荐
相关产品推荐

