我正在尝试将文件 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 到非 sudo 目录,然后通过 ssh 传递 sudo mv 命令来移动文件。有没有办法只用 scp 一步完成这个操作?
答案1
如果您收到列出的错误,则说明您没有在 scp 命令中指定“ubuntu@”,或者您已将 /root/.ssh/authorized_keys 文件复制到 /home/ubuntu/.ssh/authorized_keys(这很糟糕,因为您无法使用 ssh 登录)。
确实,一旦你开始指定“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 的文章:
在 EC2 的官方 Ubuntu 镜像上使用 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
答案2
你可以。创建一个组,比如“www-admin”,将你的用户名添加到该组,将 /var/www/fileremote chown 改为 :www-admin,并将该路径 chmod 为允许组写入。
当然,如果路径已被更改给其他组(非默认组),该组将失去所有访问权限。但在这种情况下,只需将您的用户名添加到该组即可。
答案3
我也是来这里寻找这个问题的答案。
但就我而言,我错误地将 复制~root/.ssh/authorized_keys
到了另一个帐户,而不是复制我想要的~ubuntu/.ssh/authorized_keys
。
root 用户authorized_keys
文件中有一个特定的命令,不允许连接。