2012-07-09 65 views
125

我想用我的Mac终端从下载(phpMyAdmin我在线下载)scp文件到我的Amazon EC2实例。使用scp将文件复制到Amazon EC2实例?

我使用的命令是:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/. 

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

我的两个myAmazonkey.pem和phpMyAdmin的-3.4.5-全languages.tar.gz都在下载,所以后来我试图

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/. 

和错误我: 警告:身份文件/User/Hello_Kitty22/Downloads/myAmazonkey.pem无法访问:无此文件或目录。 权限被拒绝(公钥)。 丢失连接

任何人都可以请告诉我如何解决我的问题?

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

+0

我觉得当我启动我的Amazon实例在线时,我无法访问我的本地文件下载更多 – HoKy22 2012-07-09 01:13:54

回答

255

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

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/. 

参见Connecting to Linux/UNIX Instances Using SSH

+0

非常感谢,效果很好:) – ilight 2013-03-20 16:41:42

+8

工程很棒。请注意,如果您正在运行ubuntu实例,则您的用户默认用户可能是“ubuntu”。 – RussellStewart 2013-10-29 19:58:55

+0

当然复制到/可能无法正常工作。感谢您的启发! – dnuske 2014-03-30 16:13:13

0

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

您可以简单地将该密钥ssh与AWS主机配合使用吗?

+0

是的,我可以SSH密钥给我的AWS主机。事实上,我遇到的问题是,我在亚马逊主机上(通过SSH),所以当我做CD时,我只能看到我的Amazon服务器上的文件,而不是我保存我的pem文件的本地Mac Downloads目录。当我退出我的ec2主机时,我只能cd到本地Mac Downloads目录。但是如果我退出到我的ec2主机,我无法将文件phpMyAdmin上传到我的ec2服务器。 我的pem的许可是400,我认为没关系。 – HoKy22 2012-07-09 04:54:53

+1

非常感谢您的帮助,我在您提出的最后一个问题中发现了我的问题。看来我可以ssh或scp,而不是两个在一起。 – HoKy22 2012-07-09 21:16:13

+0

感谢提示hellokitty22。我有两个终端打开一个ssh和一个scp。 – donebizkit 2012-11-07 22:24:29

8

你应该在你本地机器上试试上面的scp命令。

在本地计算机尝试:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/. 
-1

我会用:

scp -i "path to .pem file" "file to be copeide from local machine" [email protected]: 'destination folder to copy file on remote machine'

+2

这正是这个人说他们试过的。 – 2012-10-11 14:22:36

15

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

scp -i /path/to/your/.pemkey -r /copy/from/path [email protected]:/copy/to/path 

-r如果它是目录。

13

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

chmod 400 yourPublicKeyFile.pem 
2
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile [email protected]:PATH OF SERVER/serverdirectory 
0

首先,你应该从阅读改变.pem文件的模式和写入模式,以只读模式。这可以只通过一个命令在终端进行sudo chmod 400 your_public_key.pem

4

我有完全相同的问题,我的解决办法是

scp -i /path/pem -r /path/file/ [email protected] aws dns name:(留空这里)

,一旦你做了这部分,进入SSH服务器和mv文件到所需的位置

0

我尝试了上面提到的所有建议,没有任何工作。我终止了当前的实例,发起了另一个并重复相同的确切过程。这一次没有问题。有时候,这可能是偏远艾美的错。

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 
    
1

这里有一个EC2例如什么工作的细节:

scp -i /path/to/whatever.pem /users/me/path-to-file [email protected]:~ 

几个音符为开端:

  1. 注意给出的三个参数之间的空间之后的-i
  2. scp代表安全传输协议。了解这些单词可以更容易地记住命令。
  3. -i指示您需要将.pem文件作为下一个参数。如果没有-i,则比不需要.pem
  4. 注意在EC2实例的目的地末尾的:~
相关问题