我试图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已被更改为其他(非默认组),那么该组将失去所有访问权限。 但在这种情况下,只需将您的用户名添加到该组。