七叶笔记 » golang编程 » rsync时非root用户免密ssh时的一个设置细节

rsync时非root用户免密ssh时的一个设置细节

翻看SSH列表时看到某台服务器,登进去顺手检查了一下它的rsync备份日志,发现备份脚本的输出日志里极其简单,有点不寻常。

这是一个N年前由运维的同事设置好的某公司系统的定时远程备份,日子久到我已经记不起来当时怎么提的要求,文档库里应该有很清晰的记录,但直接翻看目录查看脚本,比翻看文档更直接。

看了下,是使用的一个非root用户,远程通过ssh进行rsync,将服务器上的一个目录拉下来的每日定时任务。

目录里所有的备份日志显示,每天的任务在照做。但日志的尺寸和备份的内容表明,备份没有正常进行。截取了其中最关键的一步手工执行:

 rsync -arvz -e 'ssh -p 10022' --progress --delete rsyncuser@appserver:/data/backup /home/rsyncuser/  

出现ssh的登录密码提示:

 rsyncuser@appserver's password:  

配的免密登录,出现密码提示,这不科学!到底哪里错了?

打开该appserver,运行下日志监控,然后远程继续手工执行备份,看到了输出:

 tail -f /var/log/secure
Jan 15 23:13:11 appserver sshd[2184]: Authentication refused: bad ownership or modes for directory /home/rsyncuser/.ssh
Jan 15 23:13:18 appserver sshd[2184]: Connection closed by xxx.xxx.xxx.xxx port 35788 [preauth]  

关键词:bad ownership or modes for directory /home/rsyncuser/.ssh。目录或文件的属主或权限设置错误。

远程服务器上进入到/home/rsyncuser下一看,目录及文件的权限确实不正确。找到作弊条,轻松设置各目录和文件权限:

 chmod 755 .ssh
chmod 644 .ssh/authorized_keys  

回到备份服务器上手工执行一下,顺利通过。

特此小记一下。

相关文章