以 root 身份 rsync 到 /var/www 失败,并显示“协议版本不匹配”

以 root 身份 rsync 到 /var/www 失败,并显示“协议版本不匹配”

我正在尝试设置一个命令方式将网站代码从开发机器移动到我的 Ubuntu EC2 实例中,并将其直接复制到 /var/www/mywebsite 文件夹中,nginx 希望在该文件夹中找到网站。

这些 Ubuntu AMI 带有默认的 ubuntu 用户。我可以毫无困难地将文件夹从开发机器 rsync 到 EC2 实例的 /home/ubuntu/ 文件夹:

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder [email protected]:~/code

但是当我尝试以 root 身份将同一文件夹 rsync 到 /var/www 时:

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder [email protected]:/var/www/

我收到以下错误:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(174) [sender=3.0.9]

我不太清楚为什么会发生这种情况。我注意到我无法以 root 身份 ssh 进入,因为我收到以下消息:

Please login as the user "ubuntu" rather than the user "root".
Connection to ec2[...] closed.

这也许可以解释上述行为。sshd_config 确实有“PermitRootLogin”,但我猜它在其他地方被阻止了。

我猜一个选项是更改 /var/www 文件夹的权限(目前是 755 root root),并允许 ubuntu 将文件复制到那里,而不必每次都提升到 root 权限。但是我不确定这在安全方面是否是个好主意,也不确定这是否是正确的解决方案,所以我很希望得到建议。

谢谢你!

答案1

您还可以在远程计算机上使用 sudo 启动 rsync,以 root 权限运行它。您可以使用的选项是--rsync-path

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" --rsync-path="sudo rsync" source-folder [email protected]:/var/www/

相关内容