我正在尝试使用我的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无法访问:没有这样的文件或目录。权限被拒绝(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:~/.
和我得到的错误:警告:身份文件/User/Hello_Kitty22/Downloads/myAmazonkey.pem无法访问:没有这样的文件或目录。权限被拒绝(publickey)。失去了连接
谁能告诉我如何解决我的问题?
附:有一个类似的帖子: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:~/.
使用SCP将文件从本地计算机复制到AWS EC2 Linux实例的过程将在this video中逐步介绍(包括下面提到的几点)。
要纠正使用SCP的这个特殊问题:
chmod 400 /path/to/yourKeyFile.pem
检查.pem文件的权限... openssh通常不喜欢世界上可读的私钥,并且会失败(iir,scp不能很好地向用户提供这种反馈)。
您可以简单地使用该密钥ssh到您的AWS主机吗?
首先,您应该将.pem
文件的模式从读写模式更改为只读模式。这可以通过终端sudo chmod 400 your_public_key.pem
中的单个命令来完成
我尝试了上面提到的所有建议,没有任何效果。我终止了当前的实例,启动了另一个实例并重复了同样的过程。这个时候没问题。有时它可能是远程ami的错。
我会用:
scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'
第二个目录是您的目标目标,请不要在那里使用服务器名称。换句话说,您不需要提及您当前所在机器的机器名称。
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
。:~
。我有完全相同的问题,我的解决方案是
scp -i /path/pem -r /path/file/ ec2-user@public aws dns name:
(在这里留空)
完成此部分后,进入ssh服务器和mv文件到所需位置
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
从本地发送文件到服务器:
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。