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


198

我正在尝试使用Mac终端将文件从下载(我在线下载的phpMyAdmin)中提取到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(安全副本)到没有密码的ec2实例, 但它不能回答我的问题。


我觉得当我在线启动我的Amazon实例时,无法再访问“下载”中的本地文件
HoKy22

Answers:


375

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


16
效果很好。请注意,如果您正在运行ubuntu实例,则您的用户默认用户可能是“ ubuntu”。
罗素·史都华(RussellStewart)2013年

当然复制到/可能不起作用。多谢赐教!
dnuske 2014年

@DanielDropik我不知道您是否在开玩笑...但是:/会尝试将文件夹复制到系统的根目录,这将在所有计算机上出现权限错误,而无需运行sudo(或以root身份)。
Dobz 2014年

为什么说请以用户“ ubuntu”而不是用户“ root”的身份登录。我需要复印的内容
Arjun

在我的情况下,我使用的是用户,但区别是我添加了公共dns mec2-50-17-16-67.compute-1.amazonaws.com而不是域名
shareef

31

第二个目录是您的目标目的地,请不要在其中使用服务器名称。换句话说,您不必为当前所在的计算机提及计算机名称。

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

-r(如果是目录)。


19

您的密钥不得公开可见,SSH才能正常工作。如果需要,请使用以下命令:

chmod 400 yourPublicKeyFile.pem

您救了我的同父异母兄弟
Mayukh Sarkar,

13

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

9

以下是适用于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实例的目标末尾。


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

3

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

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。


1

本视频分步介绍了使用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
    

0

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

您可以简单地使用密钥将SSH链接到您的AWS主机吗?


是的,我可以使用该密钥将其SSH到我的AWS主机。实际上,我遇到的问题是,我在Amazon主机上(通过ssh),因此在执行cd时,我只能看到Amazon服务器上的文件,而无法看到保存了pem文件的本地Mac Downloads目录。 。当我退出ec2主机时,我只能cd到本地Mac下载目录。但是,如果我退出ec2主机,则无法将文件phpMyAdmin上传到我的ec2服务器。我的同意是400,我认为可以。
HoKy22

2
非常感谢您的帮助,我在您问的最后一个问题中发现了我的问题。看来我可以ssh或scp,而不是两个在一起。
HoKy22

谢谢你的提示hellokitty22。我有两个终端,一个用于ssh,另一个用于scp。
donebizkit 2012年

0

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


0

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


0

这只是为我工作。我对这个问题使用了另外两个答案。

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


-1

我会用:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.