scp 到 AWS EC2 - 错误 - “请以用户“ubuntu”而不是用户“root”身份登录。”

scp 到 AWS EC2 - 错误 - “请以用户“ubuntu”而不是用户“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 到非 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文件中有一个特定的命令,不允许连接。

相关内容