我有几台运行 Debian Lenny 的服务器。
就在最近,我发现了ssh 的PermitRootLogin=forced-commands-only指令,它允许我使用 ssl 密钥以 root 身份运行脚本化的 rsync,而无需启用更通用的 root ssh 访问。
然而,上周这停止工作 - 它出现在我的所有服务器上 - 我不知道为什么。
一切都可以继续使用PermitRootLogin=yes正常工作,但我更愿意阻止 root 登录 - 特别是通过密码。
在它停止工作的那一天,我们重新配置了我们的一个交换机上的一些端口(我们后来恢复了),但我看不出这会影响到这一点,因为它仍然可以在 PermitRootLogin 设置为 yes 的情况下工作。
我如何诊断为什么强制命令仅指令明显停止工作?
“PermitRootLogin 仅强制命令”要求所有通过 SSH 以 root 身份进行的连接都需要使用公钥身份验证,并且命令与该密钥相关联(如“validate-rsync”)。
如果您想以 root 身份登录,但只能使用密钥,请使用:
要将 rsync 限制为已定义的 ssh-key,您可以在您的 authorized_keys 中指定:
并将此包装器保存到:/usr/local/sbin/validate-rsync
rsync 附带了一个稍微复杂的脚本来做同样的事情, http://www.samba.org/ftp/unpacked/rsync/support/rrsync
如果 rsync 可以以 root 身份登录,那么任何人都可以:对于服务器来说,敲门的东西没有区别。我相信它要么是实验性的/hacky,要么他们只是意识到它并不比“是”更安全。
我建议您禁用 root 的密码验证(例如,完全删除密码并
sudo
在需要时使用)并依赖密钥验证方法。