SCP权限被拒绝(公钥)。仅在目录上使用-r标志时在EC2上

时间:2014-01-05 21:41:55

标签: unix amazon-ec2 file-permissions scp

scp -r /Applications/XAMPP/htdocs/keypairfile.pem uploads ec2-user@publicdns:/var/www/html

其中uploads是目录,返回Permission denied(publickey)。

然而

scp -i /Applications/XAMPP/htdocs/keypairfile.pem footer.php ec2-user@publicdns:/var/www/html

工作(注意标志更改)。

上传是一个空文件夹

这些是上传目录的文件权限

drwxrwxrwx 3 geoffreysangston admin 102 Nov 15 01:40 uploads

这些是/ var / www / html

的文件权限

drwxr-x--- 2 ec2-user ec2-user 4096 Jan 5 20:45 html

我已经尝试将html更改为777,但这也无效。

5 个答案:

答案 0 :(得分:94)

-i标志指定要使用的私钥(.pem文件)。如果您没有指定该标志(如第一个命令中那样),它将使用您的默认ssh密钥(通常位于~/.ssh/下)。

因此,在您的第一个命令中,您实际上是要求scp使用您的默认ssh密钥上传.pem文件。我认为这不是你想要的。

请改为使用:

scp -r -i /Applications/XAMPP/htdocs/keypairfile.pem uploads/* ec2-user@publicdns:/var/www/html/uploads

答案 1 :(得分:14)

将文件从本地传输到远程主机

scp -i(密钥路径)(要传输文件的路径)(用户名@ ip):(要复制文件的路径)

e.g scp -i aws.pem /home/user1/Desktop/testFile   ec2-user@someipAddress:/home/ec2-user/

P.S。 - 这个ip地址的ec2-user @ someipAddress应该可以访问我的案例中的目标文件夹/ home / ec2-user /

答案 2 :(得分:14)

即使上述解决方案不起作用,也要检查aws ec2实例的目标文件的权限。也许你可以试试 - sudo chmod 777 -R destinationFolder/*

答案 3 :(得分:2)

如果您要将文件/Applications/XAMPP/htdocs/keypairfile.pem上传到ec2-user@publicdns:/var/www/html,您只需执行以下操作:

  

scp -Cr /Applications/XAMPP/htdocs/keypairfile.pem/uploads/ ec2-user@publicdns:/var/www/html/

其中:

  • -C - 压缩数据
  • -r - 递归

答案 4 :(得分:0)

我最初在跑步:

sudo scp

一旦我只运行scp,而没有sudo,它就会复制一切正常:

scp

在我看来,sudo scp命令没有读取~/.ssh/id_rsa.pub上当前用户的SSH公钥。