在 Debian 13 (Trixie) 中禁止密码登录 SSH 的过程与旧版本基本一致,但建议遵循最新的配置规范(使用 sshd_config.d 目录)。在执行以下操作前,请务必确保你已经成功配置并测试了 SSH 密钥登录,并且该用户具有 sudo 权限。否则,一旦禁用密码登录,你可能会被彻底锁在系统之外。 第一步:确保密钥已部署 如果你还没有设置密钥,请在本地机器上执行: ssh-copy-id username@your_server_ip测试无需密码即可登录:ssh username@your_server_ip。第二步:修改 SSH 配置 虽然可以直接修改 /etc/ssh/sshd_config,但 Debian 现在推荐在 sshd_config.d 目录下创建独立的配置文件,这样在系统升级时更不容易产生冲突。* 创建一个新的配置文件:sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf* 在文件中写入以下内容:# 禁用密码身份验证 PasswordAuthentication no# 禁用挑战响应认证(针对某些 MFA/PAM 模块) KbdInteractiveAuthentication no# 确保公钥认证是开启的(通常默认开启) PubkeyAuthentication yes* 检查 /etc/ssh/sshd_config(可选):确保主配置文件中有一行 Include /etc/ssh/sshd_config.d/*.conf(Debian 12/13 默认都有)。 第三步:验证并重启服务 在重启 SSH 服务之前,务必检查语法是否正确,以防配置错误导致服务无法启动:* 检查语法:sudo sshd -t如果没有任何输出,说明语法正确。* 重启 SSH 服务:sudo systemctl restart ssh进阶:禁止 Root 用户密码登录 如果你允许 Root 登录,但只允许它使用密钥,可以再添加或修改以下配置: PermitRootLogin prohibit-password这将禁止 Root 使用密码,但保留其密钥登录权限。