ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试使用我的 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 但它没有回答我的问题。

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

W
W.P. McNeill

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


效果很好。请注意,如果您正在运行 ubuntu 实例,您的用户默认用户可能是“ubuntu”。
当然复制到 / 可能不起作用。感谢您的启发!
@DanielDropik 我不知道你是不是在开玩笑......但是:/ 会尝试将文件夹复制到系统的根目录,这会在不运行 sudo (或以 root 身份)的情况下在所有机器上给出权限错误。
为什么它说请以用户“ubuntu”而不是用户“root”登录。我需要做什么来复制
就我而言,我使用的是用户,但不同之处在于我添加了公共 dns mec2-50-17-16-67.compute-1.amazonaws.com 而不是域名
S
Syed Priom

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

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

-r 如果是目录。


非常感谢你做的这些。这是唯一对我有用的解决方案。
scp -i "xyz.pem" -r file_xyz.zip user@server.region.compute.amazonaws.com:/path/
W
Walter Tross

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

chmod 400 yourPublicKeyFile.pem

你救了我的一天兄弟
D
DV Dasari

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

F
Forrest

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

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

开始的几点注意事项:

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


M
Mustafa Kahraman

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

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

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


V
Viraj Wadate

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

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 。


你怎么知道你的 ubuntu@XX.XXX.XXX.XXX 是什么?虽然我使用的是 Windows
P
Paul Roub

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

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


这对我有用,而其他答案由于某种原因没有效果。不知道是什么问题。 Ubuntu 20.04 到 ubuntu 20.04。
P
Prasad Khode
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

V
Vatsal Shah

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

U
Umar Asghar

公共 DNS scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@my-instance-public-dns-name:path/ (IPv6) scp -i /path/my- key-pair.pem /path/my-file.txt ec2-user@\[my-instance-IPv6-address\]:path/


对我有用,大声笑,我实际上使用 ~/path 来定位它
b
blackHoleDetector

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

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

您需要指定正确的 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 提供商。您的私钥不得公开可见。运行以下命令,以便只有 root 用户可以读取该文件。 chmod 400 /path/to/yourKeyFile.pem


S
Shashwat Gupta

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


B
Bryan Stenson

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

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


是的,我可以使用该密钥 ssh 到我的 AWS 主机。事实上,我遇到的问题是,我在亚马逊主机上(通过 ssh),所以当我执行 cd 时,我只能看到我的亚马逊服务器上的文件,而不是我保存 pem 文件的本地 Mac 下载目录.当我退出我的 ec2 主机时,我只能 cd 到我的本地 Mac 下载目录。但是如果我退出到我的 ec2 主机,我无法将文件 phpMyAdmin 上传到我的 ec2 服务器。我的pem的权限是400,我觉得没问题。
非常感谢您的帮助,我通过您提出的最后一个问题找到了我的问题。看来我可以 ssh 或 scp,而不是两个一起。
感谢您的提示 hellokitty22。我有两个终端,一个用于 ssh,一个用于 scp。
S
Shravan40

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


M
Marie D.

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


T
Tawseef Bhat

尝试使用此命令

如果您的实例使用的是 ubuntu

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

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


k
karthikr

我会使用:

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