作为另一个用户进行 rsync

作为另一个用户进行 rsync

当我以普通用户身份运行以下命令时,一切正常:

fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/

它无需任何用户交互即可工作,但我需要在以 root 身份执行的脚本中运行,所以我尝试了:

root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/

并且还尝试过:

root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"

两者都有效,但要求我输入“密钥密码”,我可以避免吗?

答案1

“密钥密码”可能来自 SSH notrsyncsudo,它要求输入密码来解锁您的 SSH 私钥。

由于我确实不建议您使用没有密码的密钥,因此请考虑脚本以 root 身份运行的情况。在您登录后,脚本是否总是以 root 身份运行?您可以在登录后输入一次密码吗?

如果是这种情况,我建议使用类似的东西keychain确保脚本在以 root 身份运行时使用以您的用户身份启动的 ssh-agent。您可以进行设置,这样您只需在登录后输入一次密码,并且以后的任何调用都不需要交互。

如果不是这种情况,如果脚本必须自主运行而无需您进行任何交互式身份验证,请考虑专门为备份脚本生成密钥对,然后限制它可以执行的操作,方法是让它以远程另一个用户的身份进行身份验证end (即不是fabio,而是例如),或者使用远程端文件中的参数fabio-backup来限制它(尽管这有点复杂,因为它需要查看环境变量;请参阅command=.authorized_keysSSH_ORIGINAL_COMMAND授权密钥(5)详情)

答案2

您的 ssh 私钥受密码保护。当您以(登录)用户身份手动运行它时,它使用 ssh 代理,您曾经在其中存储过密码密钥库。

然而,当无人值守运行时,这种情况不会发生——毕竟,用户甚至可能没有登录(因此其密钥库不可用)。为了让它始终工作,您需要从 ssh 私钥中删除密码(通过以ssh-keygen -p用户身份登录时fabio- 只需按 Enter 键获取新密码,它就会被删除)。

次要安全说明:当私钥不受密码保护时,任何获得fabio帐户访问权限的人都可以通过 ssh 连接到允许该密钥的其他主机,而无需首先从用户处嗅探密码)

相关内容