我正在尝试使用我的 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 但它没有回答我的问题。
尝试将用户指定为 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。
第二个目录是您的目标目的地,不要在那里使用服务器名称。换句话说,您不需要提及您当前所在机器的机器名称。
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
-r 如果是目录。
您的密钥不得公开查看,SSH 才能正常工作。如果需要,请使用此命令:
chmod 400 yourPublicKeyFile.pem
您应该在本地计算机上尝试上述 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:~/.
以下是适用于 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 实例目标末尾的 :~。
我有完全相同的问题,我的解决方案是
scp -i /path/pem -r /path/file/ ec2-user@public aws dns name:
(此处留空)
完成此部分后,进入 ssh 服务器和 mv 文件到所需位置
将文件从本地发送到服务器:
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 。
这对我有用。我对这个问题使用了其他两个答案的组合。
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 复制并粘贴的。
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory
以下 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
公共 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/
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
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 下载/
检查 .pem 文件的权限...openssh 通常不喜欢世界可读的私钥,并且会失败(iir,scp 在向用户提供此反馈方面做得不好)。
您可以简单地使用该密钥 ssh 到您的 AWS 主机吗?
首先,您应该将 .pem
文件的模式从读写模式更改为只读模式。这可以通过终端 sudo chmod 400 your_public_key.pem
中的单个命令来完成
我尝试了上面提到的所有建议,但没有任何效果。我终止了当前实例,启动了另一个实例并重复了相同的过程。这次没有问题。有时这可能是远程 ami 的错。
尝试使用此命令
如果您的实例使用的是 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
我会使用:
scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'
不定期副业成功案例分享
:/
会尝试将文件夹复制到系统的根目录,这会在不运行 sudo (或以 root 身份)的情况下在所有机器上给出权限错误。