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

时间:2012-07-09 01:02:53

标签: amazon-ec2 terminal copy scp public-key

我正在尝试使用我的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:没有此类文件或目录。 权限被拒绝(publickey)。 失去联系

我的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:没有此类文件或目录。 权限被拒绝(publickey)。 失去联系

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

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

16 个答案:

答案 0 :(得分:336)

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

答案 1 :(得分:27)

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

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

-r如果是目录。

答案 2 :(得分:17)

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

chmod 400 yourPublicKeyFile.pem

答案 3 :(得分:11)

您应该在本地计算机上尝试上面的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:~/.

答案 4 :(得分:8)

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

答案 5 :(得分:6)

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

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

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

答案 6 :(得分:5)

scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

答案 7 :(得分:2)

以下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

答案 8 :(得分:2)

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

  

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 :(得分:1)

这对我有用。我对这个问题使用了另外两个答案。

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

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

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

中的单个命令来完成

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

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

  1. 您需要指定正确的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提供商。
  2. 您的私钥不得公开显示。运行以下命令,以便只有root用户可以读取该文件。

    chmod 400 /path/to/yourKeyFile.pem
    

答案 14 :(得分: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 下载/

答案 15 :(得分:-1)

我会用:

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