RackNerd VPS 开启 SSH 密钥登录后,默认仍然可以使用密码登录,除非你在配置文件中显式关闭了密码验证选项。大多数 Linux 发行版镜像在初始化时同时允许密钥和密码两种验证方式,修改sshd_config中的PasswordAuthentication参数即可控制是否保留密码登录。
先说结论:可以共存,密钥登录不会自动禁用密码登录,需手动配置确认。
- 适合场景:密钥登录为主,密码登录作为应急备用通道。
- 优先操作:检查
/etc/ssh/sshd_config中PasswordAuthentication是否为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第二步:修改认证参数
使用编辑器打开配置文件,找到Authentication相关部分。确保PasswordAuthentication设置为yes。如果该行被注释(前面有#),去掉注释符号。
vi /etc/ssh/sshd_config同时检查PermitRootLogin设置。如果你需要使用 root 账号密码登录,该项也必须设置为yes或prohibit-password以外的值。
第三步:重启 SSH 服务
配置修改后必须重启服务才能生效。不同系统命令可能略有差异,主流系统使用以下命令:
systemctl restart sshd如果系统提示服务名是ssh而不是sshd,请尝试systemctl restart ssh。
怎么验证是否生效
不要关闭当前已连接的 SSH 会话,新开一个终端窗口进行验证,防止配置错误导致无法登录。
方法一:强制使用密码登录测试
在本地新终端中使用-o参数指定首选认证方式为密码,观察是否提示输入密码。
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 配置组件及版本支持说明。