一、操作记录
在出问题前使用了如下rsync命令:
rsync -av --ignore-existing --include='*/' --include='*.mp4' --include='*.mkv' --include='*.avi' --include='*.mov' --exclude='*' /downloads/16T/embylink/movie1/华语电影/ /mnt/emby/movie1/华语电影/cd ~
前面没什么问题,最后的 cd ~ 才是是罪魁祸首。
那么为什么会导致两个命令输在一起了呢?在linux终端中,按方向⬆️会自动输入上一条命令。猜测是在输入 cd命令时不小心碰到了⬆️键。
二、问题分析
那为什么输在一起会导致root目录权限变更呢?
- 如果你在
rsync
和cd
之间没有使用&&
或;
来明确分隔这两个命令,系统可能会将它们视为一个整体,导致cd ~
在rsync
命令执行过程中被解释为rsync
的参数或选项。 - 这种情况下,
rsync
可能会尝试将cd ~
解释为一个路径或选项,从而导致意外的行为,包括权限变更。
因此,root目录权限被变更。又因为SSH密钥登录 要求 /root
目录的权限必须是 700
(即 drwx------
),所以登录时ssh终端会提示:“SSH_MSG_DISCONNECT: 2 Too many authentication failures”。此时通过服务器的UI终端输入密码登录,检查ssh日志就会发现:
root@debian11:~# sudo tail -f /var/log/auth.log
Mar 13 21:24:26 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:26 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:26 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:30 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:30 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:30 debian11 sshd[14611]: Authentication refused: bad ownership or modes for directory /root
Mar 13 21:24:30 debian11 sshd[14611]: error: maximum authentication attempts exceeded for root from 192.168.0.103 port 48054 ssh2 [preauth]
Mar 13 21:24:30 debian11 sshd[14611]: Disconnecting authenticating user root 192.168.0.103 port 48054: Too many authentication failures [preauth]
Mar 13 21:25:01 debian11 sudo: root : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
Mar 13 21:25:01 debian11 sudo: pam_unix(sudo:session): session opened for user root(uid=0) by root(uid=0)
Mar 13 21:25:03 debian11 sshd[14957]: Connection closed by 192.168.0.103 port 52302 [preauth]
日志提示:bad ownership or modes for directory /root :root权限配置错误。
使用ls -ld /root 发现rsync将root目录权限更改为了777,导致ssh连接时被拒绝。
三、解决方法
此时输入下面的命令即可,同时检查.ssh目录和公钥的权限。
chmod 700 /root
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
Comments 1 条评论
有空优化优化你网站,卡死了