禁用PAM与密码认证后仍可登录Cockpit Web UI的原因咨询
禁用PAM与密码认证后仍可登录Cockpit Web UI的原因咨询
哈哈,这个问题确实有点反直觉,我刚看到的时候也愣了一下!咱们掰开揉碎了说:
你在/etc/ssh/sshd_config里设置的那一堆规则,只对SSH命令行登录生效——就是你用ssh客户端远程连服务器的时候才会遵守这些限制。但Cockpit是个独立的Web服务,它的认证逻辑和SSH服务完全是两条线,根本不会继承sshd的这些配置。
那为什么禁用了SSH的PAM还能登Cockpit呢?核心原因有这几个:
- 首先,Cockpit确实依赖PAM,但它是直接调用系统层面的PAM栈,而不是靠sshd启用PAM的开关。你在sshd里设
UsePAM no,只是不让SSH服务用PAM,但系统本身的PAM配置和功能还是完好的,Cockpit照样能调用它来验证身份。 - 其次,你关的
PasswordAuthentication no也是SSH专属的,只限制用ssh命令登录时不能输密码。Cockpit的Web登录走的是自己的认证流程,它会直接校验你的系统用户密码,完全不受sshd的密码禁用设置影响。 - 还有你设置的
PermitRootLogin相关选项,同样只管SSH登录的root用户。Cockpit对root登录的控制是单独的,除非你在Cockpit的配置里专门锁了root,否则默认情况下是允许登录的(不同版本可能略有差异)。
总结一下就是:sshd的配置是管SSH命令行登录的,Cockpit是独立的Web服务,有自己的一套认证规则。你禁用的只是SSH服务使用PAM和密码登录的权限,并没有关掉系统本身的用户认证功能,所以Cockpit依然能正常验证你的身份~
备注:内容来源于stack exchange,提问作者orr
相关产品推荐
相关产品推荐

