You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSH仅启用公钥认证、禁用密码认证的配置差异及正确方法咨询

SSH仅启用公钥认证、禁用密码认证的配置差异及正确方法咨询

嗨,这个问题问到点子上了——很多人在配置SSH禁用密码登录时,都会疑惑这几个参数的区别,我来给你逐一拆解清楚:

各配置项的作用

  • PasswordAuthentication no:这是最直接的设置,专门禁用传统的账号密码直接登录方式,也就是我们平时输入用户名+密码的那种常规登录流程,设为no后,这种方式就完全失效了。
  • ChallengeResponseAuthentication no:这个参数针对的是挑战-响应式认证,比如系统弹出验证码、U2F密钥验证、或者其他需要用户交互式响应的验证方式(这类不是单纯的静态密码,但本质还是需要用户提供验证信息)。关闭它可以堵住这类非传统密码但仍属于“用户输入验证”的登录途径。
  • UsePAM no:PAM(可插拔认证模块)是Linux系统用来处理认证的通用框架,很多系统的SSH会依赖PAM来实现部分认证逻辑。如果你的PAM配置里存在允许密码登录的规则,哪怕你已经关掉了上面两个参数,PAM可能还是会绕开限制让密码登录生效。设为no就会彻底禁用SSH对PAM的依赖,从根源上切断这种可能性,但这也可能影响一些依赖PAM的SSH附加功能(比如会话管理、sudo联动等)。

配置差异对比

  • 只设置PasswordAuthentication no:仅仅堵住了最常规的密码登录,但如果系统开启了挑战响应认证、或者PAM配置存在漏洞,用户仍有可能通过其他方式用密码类信息登录。
  • 加上ChallengeResponseAuthentication noUsePAM no:相当于从三个层面全方位封锁了所有可能的密码类认证入口,安全性更高,但UsePAM no可能带来功能副作用,需要根据实际环境判断。

正确的配置方式

其实没有绝对的“唯一正确”,要结合你的系统环境来选:

  1. 基础稳妥配置(推荐大多数场景)
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    
    这个组合已经能堵住绝大多数密码登录途径,同时保留PAM的正常功能,不会影响系统其他依赖PAM的服务。
  2. 极致安全配置(适合对安全性要求极高、且不需要PAM功能的场景)
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    UsePAM no
    
    但使用这个配置前一定要先测试:在当前SSH连接未断开的情况下,新开一个终端尝试用公钥登录,确认能正常登录后,再重启sshd服务(比如执行systemctl restart sshd),避免因PAM禁用导致无法登录。

最后提醒一句:修改配置后,绝对不要直接断开当前SSH会话,一定要先验证新配置的有效性,确保公钥登录正常后再操作,不然可能会把自己锁在系统外哦!

备注:内容来源于stack exchange,提问作者lonix

火山引擎 最新活动