从本地机器上传文件到AWS

问题描述 投票:0回答:7

如何使用scp命令上传文件到aws服务器

  • 我在本地机器的
    /Downloads
    中有.pem文件
  • 我正在尝试将文件复制到AWS服务器中的

    /images
    文件夹

    我可以使用什么命令?

谢谢,

amazon-web-services amazon-ec2
7个回答
50
投票

您可以使用普通的

scp

scp -i ~/Downloads/file.pem local_image_file user@ec2_elastic_ip:/home/user/images/

您需要为 EC2 实例添加一个弹性 IP,在 EC2 实例安全组中向您的本地计算机 IP 打开端口 22,并使用正确的用户(可以是 ec2-user、admin 或 ubuntu)(请参阅 AMI 文档)).


5
投票

Diego 的答案有效。但是,如果您不知道您的弹性 IP,那么您可以简单地

scp
使用以下命令(检查参数的顺序)

scp -i 您的标识符的路径.pem 要复制的文件 ubuntu@public-IP:/所需路径

仅供参考,这里

ubuntu
是您的 AWS 用户,
public-IP
有点像 54.2xx.xxx.xxx,例如54.200.100.100 或类似的 (如果顺序混乱:文件名在标识符之前,那么您将收到
Permission denied (publickey).lost connection
错误)

另外,请记住

.pem
文件的权限..应该是400或600。不对所有人公开。 希望有帮助!


4
投票

这才是从本地上传到远程的正确方式。

scp -i "zeus_aws.pem" ~/Downloads/retail_market_db-07-01-2021.sql [email protected]:/var/www/

可能是更好的方法


3
投票

有很多方法可以实现你想要的

  1. 使用 s3cmd http://s3tools.org/s3cmd

  2. 或使用cyberduck http://cyberduck.ch/

  3. 或使用亚马逊Java API编写工具


3
投票

您可以尝试kitten 实用程序,它是 boto3 的包装器。您可以轻松上传/下载文件并在 EC2 服务器或同时在多个服务器上运行命令。

kitten put -i ~/.ssh/key.pem cat.jpg /tmp [SERVER NAME][SERVER IP]

服务器名称例如

ubuntu
ec2-user

这会将

cat.jpg
文件上传到服务器的
/tmp
目录


1
投票

scp
的另一种替代方式是
rsync

rsync 的一些好处

rsync cmd

rsync -ravze "ssh -i /home/your-user/your-key.pem "  --exclude '.env'  --exclude '.git/' /var/www/your-folder-to-upload/*  [email protected]:/var/www/your-remote-folder

现在,如果您发现此语法有点冗长,您可以使用 aws-upload,它可以完成上述所有操作,但您只需按 Tab 键即可。


0
投票

在许多情况下,您的 EC2 实例没有面向外部的公共 IP 地址,因此您可以使用 SSM 管理器创建访问路由。请注意,您需要在 EC2 实例上安装 SSM 代理,但这作为 Amazon Linux 和 Ubuntu AMI 的标准配置。

您需要按照此处所述安装和配置 AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html 基本上下载 AWS CLI,然后转到 Web 浏览器到初始 AWS 登录屏幕,然后单击所需帐户旁边的“访问密钥”。然后输入

aws configure sso

从命令/shell 窗口输入“访问密钥”窗口中的信息。请务必记下您决定为“SSO 会话名称”和“CLI 配置文件名称”输入的内容,因为稍后您将需要这些内容。

您可以通过执行以下操作来检查配置是否正确:

aws sso login --sso-session your_sso_session_name

它将打开一个 Web 浏览器窗口,确认访问代码以及您想要授予对 Boto3(ssm 中使用的接口)的访问权限。

然后您需要通过 ssm 获取命令行访问权限:

aws ssm start-session --profile your_cli_profile_name --target i-xxxxxxxxxx

(将 i-xxxxxxxxx 替换为您的实例名称)

此示例适用于 Windows,但如果您在 Linux 计算机上运行,则应该可以正常工作 - 只需替换 %USERPROFILE%\.ss

© www.soinside.com 2019 - 2024. All rights reserved.