使用 scp 将文件复制到 Amazon EC2 实例?

Posted

技术标签:

【中文标题】使用 scp 将文件复制到 Amazon EC2 实例?【英文标题】:Using scp to copy a file to Amazon EC2 instance? 【发布时间】:2012-07-08 10:27:59 【问题描述】:

我正在尝试使用我的 Mac 终端将文件从下载(我在线下载的 phpMyAdmin)scp 到我的 Amazon EC2 实例。

我使用的命令是:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

我得到的错误: 警告:身份文件 myAmazonKey.pem 无法访问:没有这样的文件或目录。 权限被拒绝(公钥)。 失去连接

我的 myAmazonkey.pem 和 phpMyAdmin-3.4.5-all-languages.tar.gz 都在下载中,所以我尝试了

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

我得到的错误是: 警告:身份文件 /User/Hello_Kitty22/Downloads/myAmazonkey.pem 无法访问:没有这样的文件或目录。 权限被拒绝(公钥)。 失去连接

谁能告诉我如何解决我的问题?

附言有一个类似的帖子:scp (secure copy) to ec2 instance without password 但它没有回答我的问题。

【问题讨论】:

我感觉当我在线启动我的 Amazon 实例时,我无法再在下载中访问我的本地文件了 【参考方案1】:

尝试将用户指定为ec2-user,例如

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

见Connecting to Linux/UNIX Instances Using SSH。

【讨论】:

效果很好。请注意,如果您正在运行 ubuntu 实例,您的用户默认用户可能是“ubuntu”。 当然复制到 / 可能不起作用。谢谢指教! @DanielDropik 我不知道你是不是在开玩笑......但是:/ 会尝试将文件夹复制到系统的根目录,这会在所有机器上出现权限错误而没有运行 sudo(或以 root 身份)。 为什么说请以用户“ubuntu”而不是用户“root”登录。我需要做什么来复制 在我的情况下,我使用的是用户,但不同之处在于我添加了公共 dns mec2-50-17-16-67.compute-1.amazonaws.com 而不是域名【参考方案2】:

第二个目录是你的目标,不要在那里使用服务器名称。换句话说,您不需要提及您当前所在机器的机器名称。

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

-r 如果是目录。

【讨论】:

非常感谢您。这是唯一对我有用的解决方案。 scp -i "xyz.pem" -r file_xyz.zip user@server.region.compute.amazonaws.com:/path/【参考方案3】:

您的密钥不得公开查看,SSH 才能正常工作。如果需要,请使用此命令:

chmod 400 yourPublicKeyFile.pem

【讨论】:

你救了我的一天兄弟【参考方案4】:

您应该在本地计算机上尝试上述 scp 命令。

在您的本地机器上尝试:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

【讨论】:

【参考方案5】:

以下是适用于 EC2 实例的详细信息:

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

开头的几点说明:

    注意-i后面给出的三个参数之间的空格 scp 代表安全复制协议。知道单词可以更容易记住命令。 -i 指示您需要将 .pem 文件作为下一个参数。如果没有-i,则不需要.pem。 注意 EC2 实例目标末尾的 :~

【讨论】:

【参考方案6】:

我遇到了完全相同的问题,我的解决方案是

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name:(此处留空)

完成此部分后,进入 ssh 服务器和 mv 文件到所需位置

【讨论】:

【参考方案7】:
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

【讨论】:

【参考方案8】:

将文件从本地发送到服务器:

scp -i .ssh/awsinstance.pem my_local_file ubuntu@XX.XXX.XXX.XXX:/home/ubuntu

从服务器下载文件到本地:

scp -i .ssh/awsinstance.pem ubuntu@XX.XXX.XXX.XXX:/home/ubuntu/server_file .

【讨论】:

【参考方案9】:

这对我有用。我对这个问题使用了其他两个答案的组合。

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com:/home/ec2-user/remoteDir

“ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com”是从您的 ec2 实例的公共 DNS 复制并粘贴的。

【讨论】:

这对我有用,而其他答案由于某种原因没有效果。不知道是什么问题。 Ubuntu 20.04 到 ubuntu 20.04。【参考方案10】:

以下 SCP 格式适用于我

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt:它将是您的根目录的路径(在我的例子中是 /home/ubuntu)。就我而言,我想下载的文件位于 /var/www

SampleFile2.txt:它将是您机器根路径的路径(在我的例子中,/home/MyPCUserName)

所以,我必须在下面写命令

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

【讨论】:

【参考方案11】:

this video 中逐步介绍了使用 SCP 将文件从本地计算机复制到 AWS EC2 Linux 实例的过程(包括以下几点)。

要纠正这个使用 SCP 的特殊问题:

    您需要指定正确的 Linux 用户。来自Amazon:

    对于 Amazon Linux,用户名为 ec2-user。 对于 RHEL,用户名为 ec2-user 或 root。 对于 Ubuntu,用户名为 ubuntu 或 root。 对于 Centos,用户名为 centos。 对于 Fedora,用户名为 ec2-user。 对于 SUSE,用户名为 ec2-user 或 root。 否则,如果 ec2-user 和 root 不起作用,请咨询您的 AMI 提供商。

    您的私钥不得公开可见。运行以下命令,只有root用户才能读取文件。

    chmod 400 /path/to/yourKeyFile.pem
    

【讨论】:

【参考方案12】:

    公共 DNS

    scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@my-instance-public-dns-name:path/
    

    (IPv6)

     scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@\[my-instance-IPv6-address\]:path/
    

【讨论】:

对我有用,哈哈,我实际上使用 ~/path 来定位它【参考方案13】:

检查 .pem 文件的权限...openssh 通常不喜欢世界可读的私钥,并且会失败(iir,scp 不能很好地向用户提供此反馈)。

您可以简单地使用该密钥 ssh 到您的 AWS 主机吗?

【讨论】:

是的,我可以使用该密钥 SSH 到我的 AWS 主机。事实上,我遇到的问题是,我在亚马逊主机上(通过 ssh),所以当我执行 cd 时,我只能看到我的亚马逊服务器上的文件,而不是我保存 pem 文件的本地 Mac 下载目录.当我退出我的 ec2 主机时,我只能 cd 到我的本地 Mac 下载目录。但是如果我退出到我的 ec2 主机,我无法将文件 phpMyAdmin 上传到我的 ec2 服务器。我pem的权限是400,我觉得还可以。 非常感谢您的帮助,我通过您提出的最后一个问题找到了我的问题。看来我可以 ssh 或 scp,而不是两个一起。 感谢 hellokitty22 的提示。我有两个终端,一个用于 ssh,一个用于 scp。【参考方案14】:

首先您应该将.pem 文件的模式从读写模式更改为只读模式。这可以通过终端sudo chmod 400 your_public_key.pem中的单个命令来完成@

【讨论】:

【参考方案15】:

我尝试了上面提到的所有建议,但没有任何效果。我终止了当前实例,启动了另一个实例并重复了相同的过程。这次没有问题。有时这可能是远程 ami 的错。

【讨论】:

【参考方案16】:

SCP推荐

将文件从本地发送到远程服务器

sudo scp -i ../Downloads/new_bb_key.pem ./dump.zip ubuntu@13.127.124.129:~/.

将文件从远程服务器发送到本地

sudo scp -i ~/Downloads/new_bb_key.pem ubuntu@13.127.124.129:/home/ubuntu/LatestDBdump.zip 下载/

【讨论】:

【参考方案17】:

我会使用:

scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'

【讨论】:

以上是关于使用 scp 将文件复制到 Amazon EC2 实例?的主要内容,如果未能解决你的问题,请参考以下文章

使用 scp 将文件传输到 amazon ec2 实例总是给我拒绝权限(公钥,gssapi-with-mic)

scp(安全复制)到没有密码的ec2实例

scp 到 Amazon EC2 失败,但 ssh 有效

如何将我的 .war 文件复制到 AWS 上的 EC2 实例?

WinSCP 在登录到“root”后连接到 Amazon AMI EC2 实例更改用户

如何将映像传输到 Amazon EBS 卷以供 EC2 使用?