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

HoK*_*y22 183 terminal scp copy amazon-ec2 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:~/.
Run Code Online (Sandbox Code Playgroud)

我得到的错误: 警告:身份文件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:~/.
Run Code Online (Sandbox Code Playgroud)

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

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

ps有一个类似的帖子:scp(安全复制)到ec2实例没有密码, 但它没有回答我的问题.

W.P*_*ill 350

尝试指定用户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:~/.
Run Code Online (Sandbox Code Playgroud)

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

  • 效果很好.请注意,如果您正在运行ubuntu实例,则您的用户默认用户可能是"ubuntu". (14认同)

Sye*_*iom 29

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

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
Run Code Online (Sandbox Code Playgroud)

-r如果它是一个目录.


小智 18

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

chmod 400 yourPublicKeyFile.pem
Run Code Online (Sandbox Code Playgroud)


小智 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:~/.
Run Code Online (Sandbox Code Playgroud)


小智 10

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

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
Run Code Online (Sandbox Code Playgroud)

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


For*_*est 8

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

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~
Run Code Online (Sandbox Code Playgroud)

开始的几点注意事项:

  1. 注意在之后给出的三个参数之间的空格 -i
  2. scp代表安全复制协议.知道这些单词可以更容易记住命令.
  3. -i规定你需要将.pem文件作为下一个参数.如果没有-i,那么你就不需要了.pem.
  4. 请注意:~EC2实例的目标末尾.


小智 6

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

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

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


Vir*_*oop 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 。


Uma*_*har 6

  1. 公共DNS

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

     scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@\[my-instance-IPv6-address\]:path/
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

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


小智 5

以下 SCP 格式对我有用

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


Taw*_*hat 5

尝试使用这个命令

如果您的实例使用的是 ubuntu

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.
Run Code Online (Sandbox Code Playgroud)

您可以从此处获取有关您的实例的更多信息 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connection-prereqs.html