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

Posted

技术标签:

【中文标题】SCP 权限被拒绝(公钥)。仅当在目录上使用 -r 标志时在 EC2 上【英文标题】:SCP Permission denied (publickey). on EC2 only when using -r flag on directories 【发布时间】:2014-01-23 05:49:34 【问题描述】:

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

有效(注意标志的变化)。

uploads 是一个空文件夹

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

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,但也不起作用。

【问题讨论】:

【参考方案1】:

如果你想把文件/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 - 递归

【讨论】:

上传的路径是 /Applications/XAMPP/htdocs/projectname/uploads 我只是使用“上传”,因为我是从 projectname 目录中调用它 我试过 scp -Cr /Applications/XAMPP/ htdocs/keypairfile.pem /Applications/XAMPP/htdocs/projectname/uploads/ec2-user@ec2-54-200-81-203.us-west-2.compute.amazonaws.com:/var/www/html/ 那也没有用【参考方案2】:

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

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

尝试改为:

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

【讨论】:

这现在给了我“scp: /var/www/html/uploads: Permission denied”所以​​我想我到了某个地方。它现在可能与文件权限有关,所以我会再弄乱它们一些。谢谢你。不久前,我开始学习如何使用 unix / 控制台工作。你会怎么说是最好的方法,还是真的只是边做边学?谢谢。 您的权限似乎没问题。我认为问题出在目标目录上。我已经在我的答案中编辑了命令(2 个更改),你可以尝试一下。至于如何学习unix/linux,我更喜欢“边做边学”,但这要因人而异。在网上阅读一些教程不会有什么坏处。 因为这是我遇到类似问题(在 RPi 上)时的最佳答案,所以我将补充一点,在我的情况下,我使用调试标志 vvv 运行它并注意到 scp 是尝试/root/.ssh/id_rsa 并失败。我只是添加了-i /home/pi/.ssh/id_rsa,以便它指向正确的用户的密钥文件并且它工作。调试输出几乎总是有用的。 感谢@DavidLevesque 老问题,但 OP 在问如何学习 UNIX / Linux,“每天一个手册页”是个好方法【参考方案3】:

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

scp -i (你的key的路径) (你要传输的文件的路径) (username@ip):(要复制的文件的路径)

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

附: - 这个IP地址的ec2-user@someipAddress应该可以访问我的情况下的目标文件夹/home/ec2-user/

【讨论】:

谢谢 - 我没有意识到我必须将 -i 标志与 pem 文件结合使用,然后将源文件与目标文件结合使用。 这对我有用。我使用 -i 标志来访问实例,所以不知道为什么我没有意识到我仍然需要使用 -i 标志和键来访问实例以移动文件。谢谢【参考方案4】:

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

【讨论】:

Wordpress codex 建议使用 755 或 750。但 777 也可以。 codex.wordpress.org/Changing_File_Permissions 如果某人的destinationFolder 是home 怎么办?这不是允许回家的好方法 @Beyhan 是的,我同意。通常,您将内容复制到公共目录,然后将其移动到适当的目录。

以上是关于SCP 权限被拒绝(公钥)。仅当在目录上使用 -r 标志时在 EC2 上的主要内容,如果未能解决你的问题,请参考以下文章

使用 scp 将文件传输到 amazon ec2 实例总是给我拒绝权限(公钥,gssapi-with-mic)

git@github.com:权限被拒绝(公钥)[主目录回购] [重复]

无法在 Windows 上使用 Git bash 进行 ssh - 权限被拒绝(公钥)

Capistrano 和 GitHub 私人回购 - 权限被拒绝(公钥)

权限被拒绝(公钥) Amazon Linux aws

ssh - Amazon EC2 上的权限被拒绝(公钥)