使用 scp 将文件复制到 Amazon EC2 实例?
Posted
技术标签:
【中文标题】使用 scp 将文件复制到 Amazon EC2 实例?【英文标题】:Using scp to copy a file to Amazon EC2 instance? 【发布时间】:2012-07-08 10:27:59 【问题描述】:我正在尝试使用我的 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 无法访问:没有这样的文件或目录。 权限被拒绝(公钥)。 失去连接
谁能告诉我如何解决我的问题?
附言有一个类似的帖子:scp (secure copy) to ec2 instance without password 但它没有回答我的问题。
【问题讨论】:
我感觉当我在线启动我的 Amazon 实例时,我无法再在下载中访问我的本地文件了 【参考方案1】:尝试将用户指定为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 而不是域名【参考方案2】:
第二个目录是你的目标,不要在那里使用服务器名称。换句话说,您不需要提及您当前所在机器的机器名称。
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/【参考方案3】:您的密钥不得公开查看,SSH 才能正常工作。如果需要,请使用此命令:
chmod 400 yourPublicKeyFile.pem
【讨论】:
你救了我的一天兄弟【参考方案4】:您应该在本地计算机上尝试上述 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:~/.
【讨论】:
【参考方案5】:以下是适用于 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 实例目标末尾的 :~
。
【讨论】:
【参考方案6】:我遇到了完全相同的问题,我的解决方案是
scp -i /path/pem -r /path/file/ ec2-user@public aws dns name:
(此处留空)
完成此部分后,进入 ssh 服务器和 mv 文件到所需位置
【讨论】:
【参考方案7】:scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory
【讨论】:
【参考方案8】:将文件从本地发送到服务器:
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】:这对我有用。我对这个问题使用了其他两个答案的组合。
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。【参考方案10】:以下 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
【讨论】:
【参考方案11】: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
【讨论】:
【参考方案12】:公共 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 来定位它【参考方案13】:检查 .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。【参考方案14】:首先您应该将.pem
文件的模式从读写模式更改为只读模式。这可以通过终端sudo chmod 400 your_public_key.pem
中的单个命令来完成@
【讨论】:
【参考方案15】:我尝试了上面提到的所有建议,但没有任何效果。我终止了当前实例,启动了另一个实例并重复了相同的过程。这次没有问题。有时这可能是远程 ami 的错。
【讨论】:
【参考方案16】: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 下载/
【讨论】:
【参考方案17】:我会使用:
scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'
【讨论】:
以上是关于使用 scp 将文件复制到 Amazon EC2 实例?的主要内容,如果未能解决你的问题,请参考以下文章
使用 scp 将文件传输到 amazon ec2 实例总是给我拒绝权限(公钥,gssapi-with-mic)
如何将我的 .war 文件复制到 AWS 上的 EC2 实例?