如果使用 root 进行远程登录,rsync 为何会由于缺少权限而失败?

如果使用 root 进行远程登录,rsync 为何会由于缺少权限而失败?

我想不出任何原因为什么一个简单的文件传输失败rsync -e 'ssh -p 19' -vvv /path/to/file [email protected]:

opening connection using: ssh -p 19 -l root 192.168.179.3 rsync --server -vvve.Lsfx . .  (11 args)
Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
[sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(12)

ssh登录时一切正常。本地文件成功,权限为,所有者为调用的用户。文件位于。ssh -p 19 [email protected]cat [/path/to/file]664rsync/tmp/

在参数中指定绝对路径-e,即,没有帮助。rsync -e '/usr/bin/ssh -p 19' -vvv /path/to/file [email protected]:

rsync我在 Ubuntu 15.10 上使用3.1.1。

答案1

sshrsync给出的另一种可能解释是Permission denied, please try again.。原因是遥控器rsync位于不寻常的位置,必须--rsync-path在发送方指定(请参阅https://stackoverflow.com/questions/7261029/how-to-solve-rsync-error-error-in-rsync-protocol-data-stream-code-12-at-io-c#comment22193023_12286054)。

亲爱的ssh开发者们,请停止这种胡闹!触发的错误原因Permission denied, please try again.越来越多,请发自内心地为用户提供任何可用的反馈 - 到目前为止,您还没有朝这个方向实施任何事情,这是我使用ssh多年后遇到的,遇到过几十个非常清晰和可解释的失败原因,最终都以失败告终Permission denied, please try again.。没有人能理解这一点!

操作系统产生这个消息并且无法改变这一事实并不意味着什么。负责软件向用户提供的反馈,如果Permission denied, please try again.给出的反馈是上述非常容易沟通的故障原因,那就大错特错了 - 只需打印remote binary not found, please use --rsync-path on the sender side即可!看,这并不难。

答案2

错误消息没有提到文件权限。相反,这是标准远程控制错误消息指出登录本身不被允许 —— 要么是由于密码错误,要么是由于服务器配置不允许 root 登录。

请注意,您的“测试”和 rsync 命令之间存在一些差异:

  1. 您通过 ssh 连接到[email protected],同时 rsync 正在连接到[email protected]
  2. 您没有指定端口,因此连接到标准 SSH 端口 22,而 rsync 指定了端口 19。这些端口可能由两个具有不同配置的独立 sshd 守护程序处理。

答案3

我仅将我的解决方案放在这里,以防它对其他人有用。

我尝试使用 rsync 将文件复制到 EC2 实例。同样的命令运行了一段时间,但后来就坏了。我在网上找到的解决方案都没什么用。

通过 ssh 进入远程服务器并ls -l在我要复制到的位置运行,我发现该build文件夹是由 root 创建的,而所有其他文件夹都是由 ubuntu 创建的。权限问题源于尝试将我的本地构建文件夹复制到远程,因此删除本地构建文件夹(无论如何都不应该被复制)为我解决了这个问题。

相关内容