scp到AWS EC2 – 错误 – “请以用户”ubuntu“login,而不是用户”root“。

我试图scp文件到/ var / www,因为我在玩apache。 要移动文件我做scp -i <ec2-shh-key> localfile root@<ec2-instance-ip>:/var/www/fileremote

但是这给了我一个错误:

Please login as the user "ubuntu" rather than the user "root".

我怎么解决这个问题?

编辑:我已经发现这个超级用户的问题,首先scp'ing文件到一个非sudo目录,然后通过SSH传递一个sudo mv命令来移动该文件。 有没有办法做到这一步,只是一个步骤?

如果你得到了错误列表,那么你没有在scp命令中指定“ubuntu @”,或者你已经将/root/.ssh/authorized_keys文件复制到/home/ubuntu/.ssh/authorized_keys(这将会很糟糕因为你可以不用SSHlogin)。

确实,一旦你开始指定“ubuntu @”,你会得到一个权限错误,但你可以使用这样的命令来解决这个问题:

 rsync -vazSHAX --rsync-path "sudo rsync" LOCALILE ubuntu@HOST:/var/www/REMOTEFILE 

这里的关键是–rsync-path选项。

rsync命令甚至可以让你复制整个目录树,如下所示:

 rsync -vazSHAX --rsync-path "sudo rsync" LOCALDIR/ ubuntu@HOST:REMOTEDIR/ 

如果您使用由EC2生成的密钥对启动实例,则可能还需要在rsync中指定此选项,指向下载的ssh密钥的本地副本:

 --rsh "ssh -i KEYPAIR.pem" 

这里有一篇关于如何在Ubuntu EC2实例上使用sudo,ssh,rsync的文章:

在官方的Ubuntu Image for EC2上使用sudo,ssh,rsync
http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

下面是一篇文章,介绍如何将默认个人ssh密钥上传到EC2,以便ssh和rsync不需要额外的身份选项:

将个人ssh密钥上传到Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

您可以。 创build一个组,例如“www-admin”,将你的用户名添加到该组中,chown / var / www / fileremote为:www-admin,然后chmod该path以允许组写入。

当然,如果path已被更改为其他(非默认组),那么该组将失去所有访问权限。 但在这种情况下,只需将您的用户名添加到该组。