我使用脚本在 中执行 rsync sudo crontab
。该脚本执行双向 rsync(从服务器 A 到服务器 B 以及反向)。在我重新启动两台服务器后, rsync 无法正常工作sudo crontab
。我还设置了一个新的 cronjob,但它失败了,错误是:
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
但是,从终端运行时,rync 脚本按预期工作,没有问题。请帮忙。
答案1
连接意外关闭的原因之一rsync
是超时问题,尤其是当需要一段时间来计算文件校验和以检查远程主机上的差异时。
为了避免此问题,您需要将这些设置添加到您的~/.ssh/config
或中/etc/ssh/ssh_config
:
Host *
ServerAliveInterval 30
ServerAliveCountMax 6
并可选择在远程服务器上进行类似操作(在/etc/ssh/sshd_config
),例如
ClientAliveInterval 30
ClientAliveCountMax 6
答案2
由于几乎完全缺乏相关的信息,但一般来说,如果命令在提示符下有效,但在 cron 作业中无效,那是因为您需要指定命令的完整路径。Cron 作业没有正常的用户环境,这尤其意味着它们没有与普通用户相同的 PATH。
答案3
当连接被拒绝时,似乎会发生这种情况:
ssh:连接到主机端口 2222:连接被拒绝
然后出现rsync
错误:
rsync:连接意外关闭(迄今为止已接收 0 字节)[接收器] rsync 错误:/SourceCache/rsync/rsync-45/rsync/io.c(453) 处出现无法解释的错误(代码 255)[接收器=2.6.9]
可能的原因:
- 在我的场景中,我遇到了防火墙问题。防火墙打了一个洞。
- 密码错误(不太可能解决您的问题,但会导致相同的错误)
答案4
请查看您的 fail2ban 列表。
使用命令:“fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE”取消禁止并重试。