RackNerd VPS 开启 SSH 密钥登录后还能用密码登录吗?

文章导读
RackNerd VPS 开启 SSH 密钥登录后,默认仍然可以使用密码登录,除非你在配置文件中显式关闭了密码验证选项。大多数 Linux 发行版镜像在初始化时同时允许密钥和密码两种验证方式,修改sshd_config中的PasswordAuthentication参数即可控制是否保留密码登录。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

RackNerd VPS 开启 SSH 密钥登录后,默认仍然可以使用密码登录,除非你在配置文件中显式关闭了密码验证选项。大多数 Linux 发行版镜像在初始化时同时允许密钥和密码两种验证方式,修改sshd_config中的PasswordAuthentication参数即可控制是否保留密码登录。

先说结论:可以共存,密钥登录不会自动禁用密码登录,需手动配置确认。

  • 适合场景:密钥登录为主,密码登录作为应急备用通道。
  • 优先操作:检查/etc/ssh/sshd_configPasswordAuthentication是否为yes
  • 再验证:开启新终端窗口测试密码登录,确保不被锁在门外。

命令速用版

以下命令用于快速检查并开启密码登录权限,适用于 CentOS、Ubuntu、Debian 等常见系统。

# 编辑 SSH 配置文件
vi /etc/ssh/sshd_config

# 确保以下行存在且未被注释,值为 yes
PasswordAuthentication yes
PermitRootLogin yes

# 重启 SSH 服务使配置生效
systemctl restart sshd

为什么会这样

SSH 服务协议支持多种认证方式并行存在,密钥验证和密码验证是独立的开关。开启密钥登录只是将公钥添加到了authorized_keys文件,并不会自动修改 SSH 守护进程的全局配置。只有当配置文件明确设置PasswordAuthentication no时,密码登录才会被强制关闭。这种设计允许管理员在迁移到密钥登录的过程中保留密码作为 fallback 方案,防止配置失误导致无法远程连接。

分步处理

按照以下步骤操作,确保在保留密码登录的同时不影响已有的密钥登录功能。

第一步:备份配置文件

在修改任何系统配置前,先备份原文件,以便出错时恢复。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

第二步:修改认证参数

RackNerd VPS 开启 SSH 密钥登录后还能用密码登录吗?

使用编辑器打开配置文件,找到Authentication相关部分。确保PasswordAuthentication设置为yes。如果该行被注释(前面有#),去掉注释符号。

vi /etc/ssh/sshd_config

同时检查PermitRootLogin设置。如果你需要使用 root 账号密码登录,该项也必须设置为yesprohibit-password以外的值。

第三步:重启 SSH 服务

配置修改后必须重启服务才能生效。不同系统命令可能略有差异,主流系统使用以下命令:

systemctl restart sshd

如果系统提示服务名是ssh而不是sshd,请尝试systemctl restart ssh

怎么验证是否生效

不要关闭当前已连接的 SSH 会话,新开一个终端窗口进行验证,防止配置错误导致无法登录。

方法一:强制使用密码登录测试

在本地新终端中使用-o参数指定首选认证方式为密码,观察是否提示输入密码。

RackNerd VPS 开启 SSH 密钥登录后还能用密码登录吗?
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@你的 VPS_IP

如果系统提示输入密码且能成功登录,说明密码登录功能已保留。

方法二:查看安全日志

登录服务器后查看认证日志,确认密码验证被接受。

# CentOS/RHEL
cat /var/log/secure

# Ubuntu/Debian
cat /var/log/auth.log

查找包含Accepted password的日志行,表示密码验证成功。

常见坑

  • 权限问题导致密钥失效:如果/root/.ssh目录权限设置为 777 或authorized_keys权限不对,SSH 会拒绝密钥登录并回退到密码,或者直接拒绝连接。确保.ssh目录权限为 700,authorized_keys文件权限为 600。
  • Root 登录限制:部分镜像默认禁止 root 密码登录(PermitRootLogin prohibit-password),即使开启了密码验证,root 账号也只能用密钥登录。如需 root 密码登录,需显式修改该参数。
  • 配置语法错误:修改sshd_config时如果拼写错误,SSH 服务可能无法启动。重启服务前可使用sshd -t命令测试配置文件语法是否正确。
  • 防火墙拦截:确保服务器防火墙(如 firewalld、ufw)未阻止 22 端口,否则无论何种认证方式都无法连接。

常见问题

配置后仍然提示 Permission denied (publickey,password)?

这通常表示服务器拒绝了密码验证,检查sshd_config中是否有多个PasswordAuthentication配置项冲突,或确认 SSH 服务是否成功重启。

为了安全应该保留密码登录吗?

生产环境建议关闭密码登录。密码容易受到暴力破解攻击,而密钥登录安全性更高。保留密码登录仅建议在密钥配置未完全验证成功的过渡期使用。

忘记密钥密码还能用密码登录吗?

可以。只要服务器端开启了PasswordAuthentication yes且你知道服务器的用户密码,就可以通过密码方式登录进去重置密钥。

参考来源

  • Linux 开启密钥登录后保留密码登录的方法,2024 年 7 月 3 日资料,关于sshd_config配置参数说明。
  • SSH 密钥登录:原理、配置与安全实践指南,关于非对称加密与 SSH 认证流程的技术原理解释。
  • Red Hat Enterprise Linux 第 1 章 使用 OpenSSH 的两个系统间使用安全通讯,2026 年 6 月 20 日发布,关于 OpenSSH 配置组件及版本支持说明。