You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置OpenSSH服务器对指定普通用户强制公钥认证,其余用户可密码登录?

嘿,这个需求其实OpenSSH的配置文件就能轻松实现,我来一步步给你拆解操作:

具体配置步骤
  • 第一步:先备份配置文件(防翻车必备)
    先把原配置文件备份一份,避免改错了没法恢复:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

  • 第二步:编辑sshd主配置文件
    用你习惯的文本编辑器打开配置文件,比如:
    sudo nano /etc/ssh/sshd_config
    先确保全局的密码认证是开启的——找到PasswordAuthentication这一行,修改为:
    PasswordAuthentication yes
    如果这行前面有#注释符号,记得把它去掉。

  • 第三步:添加针对指定用户的强制公钥规则
    在配置文件的最末尾添加以下内容(假设你要限制的用户是johndoe):

    Match User johndoe
        PasswordAuthentication no
        PubkeyAuthentication yes
    

    这里的逻辑是:Match User会精准匹配指定用户,块内的配置会覆盖全局设置。所以对johndoe来说,密码登录被直接禁用,必须使用公钥认证;而其他所有未被匹配的用户,依然遵循全局规则可以用密码登录。

    如果需要限制多个用户,用逗号分隔用户名即可:

    Match User johndoe,janedoe,bob
    
  • 第四步:验证配置合法性
    改完配置先别急着重启服务,先检查有没有语法错误:
    sudo sshd -t
    如果没有输出任何内容,说明配置没问题;如果有报错,按照提示修正即可。

  • 第五步:重启sshd服务生效
    根据你的Linux发行版,执行对应的重启命令:

    • Ubuntu/Debian系:sudo systemctl restart sshd
    • CentOS/RHEL系:sudo systemctl restart sshd 或者 sudo service sshd restart
重要注意事项
  • 确保指定用户的公钥文件权限正确
    SSHD对权限要求非常严格,权限不对会直接拒绝公钥登录。登录到指定用户的账号,执行以下命令设置权限:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    sudo chown johndoe:johndoe ~/.ssh ~/.ssh/authorized_keys
    

    记得把johndoe换成你实际要限制的用户名。

  • 测试验证
    用指定用户尝试密码登录,应该会被拒绝;用公钥登录则能正常进入。其他用户尝试密码登录,应该可以顺利登录系统。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:27:19