240

我正在尝试使用我的 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 无法访问:没有这样的文件或目录。权限被拒绝(公钥)。失去了连接

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

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

4

17 回答 17

465

尝试将用户指定为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:~/.

请参阅使用 SSH 连接到 Linux/UNIX 实例

于 2012-12-18T03:21:32.197 回答
52

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

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

-r 如果是目录。

于 2014-01-22T10:02:32.830 回答
22

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

chmod 400 yourPublicKeyFile.pem
于 2014-05-18T20:43:11.233 回答
16

您应该在本地计算机上尝试上述 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:~/.
于 2012-10-08T03:15:47.800 回答
10

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

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

开始的几点注意事项:

  1. 注意后面给出的三个参数之间的空格-i
  2. scp代表安全复制协议。知道单词可以更容易记住命令。
  3. -i指示您需要将.pem文件作为下一个参数。如果没有-i,那么你不需要一个.pem
  4. 请注意:~EC2 实例的目的地末尾的 。
于 2017-10-18T17:16:59.863 回答
8

我有完全相同的问题,我的解决方案是

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

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

于 2016-01-05T02:03:54.013 回答
6
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory
于 2014-09-16T08:31:37.863 回答
6

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

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 。

于 2019-03-14T09:05:53.557 回答
6

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

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 复制并粘贴的。

于 2020-06-12T22:02:57.897 回答
5

以下 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
于 2018-12-21T11:05:54.093 回答
2

本视频逐步介绍了使用 SCP 将文件从本地计算机复制到 AWS EC2 Linux 实例的过程(包括下面提到的要点)。

要使用 SCP 更正此特定问题:

  1. 您需要指定正确的 Linux 用户。来自亚马逊

    • 对于 Amazon Linux,用户名为 ec2-user。
    • 对于 RHEL,用户名为 ec2-user 或 root。
    • 对于 Ubuntu,用户名是 ubuntu 或 root。
    • 对于 Centos,用户名为 centos。
    • 对于 Fedora,用户名为 ec2-user。
    • 对于 SUSE,用户名为 ec2-user 或 root。
    • 否则,如果 ec2-user 和 root 不起作用,请咨询您的 AMI 提供商。
  2. 您的私钥不得公开可见。运行以下命令,以便只有 root 用户可以读取该文件。

    chmod 400 /path/to/yourKeyFile.pem
    
于 2017-09-12T02:55:56.750 回答
2
  1. 公共 DNS

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

     scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@\[my-instance-IPv6-address\]:path/
    
于 2021-09-05T06:06:02.770 回答
0

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

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

于 2012-07-09T04:43:31.707 回答
0

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

于 2015-09-26T07:17:02.277 回答
0

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

于 2017-09-05T23:19:46.653 回答
0

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 下载/

于 2021-01-25T10:12:37.620 回答
-1

我会使用:

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

于 2012-10-11T14:16:21.147 回答