SSH登录Ubuntu时密码错误?常见原因与解决方法汇总

admin
SSH登录Ubuntu密码错误是常见问题,原因主要有:密码输入错误(大小写、键盘布局差异)、SSH服务配置(如禁用密码登录)、账户锁定、权限异常(如.ssh目录权限错误)等,解决方法:核对密码大小写与键盘布局,检查/etc/ssh/sshd_config确保PasswordAuthentication启用;使用sudo unlock解锁账户;修复.ssh目录权限(700)及authorized_keys权限(600);确认账户未被禁用,避免暴力尝试,复杂场景可联系管理员处理。

SSH(Secure Shell)是远程管理Ubuntu服务器的常用工具,但登录时提示"Permission denied(publickey,password)"或"Access denied"的密码错误问题,相信不少用户都遇到过,这个问题可能由密码输入错误、账户锁定、SSH配置问题等多种原因导致,本文将系统梳理常见原因及对应解决方法,帮你快速排查并解决问题。

最常见原因:密码输入错误或格式问题

新手遇到密码错误时,80%的情况其实是输入环节的问题,尤其容易被忽略的细节包括:

大小写敏感与特殊符号

Ubuntu的Linux系统对大小写严格区分,如果你的密码包含大小写字母(如"Pass123"和"pass123"是不同的)、特殊符号(如!@#$%^&*),输入时需确保与设置时完全一致,密码是"Test@2023!",输入时少一个字符、大小写写错,都会导致认证失败。

SSH登录Ubuntu时密码错误?常见原因与解决方法汇总

隐藏字符与输入法干扰

SSH终端默认不显示输入的密码(光标无变化),容易漏输或多输字符,中文输入法未切换至英文状态时,输入的符号可能被识别为中文符号(如和),导致密码不匹配。

密码已修改或混淆

你是否近期修改过Ubuntu系统密码?或者是否混淆了不同系统的登录密码(如Ubuntu服务器密码与本地电脑密码)?如果密码已被修改(比如通过passwd命令重置),但仍在使用旧密码登录,自然会提示错误。

解决方法

  • 输入密码时,仔细核对每个字符(可先在记事本中输入密码,复制粘贴到SSH终端,避免手动输入错误);
  • 确保输入法为英文状态,检查特殊符号是否为英文半角格式;
  • 确认当前密码是否为最新设置(若不确定,可尝试通过其他方式登录系统后重置密码,详见后文)。

账户被锁定:多次输错触发安全机制

Ubuntu系统默认配置了"登录失败锁定"策略,防止暴力破解,如果连续输错密码达到一定次数(通常为3-6次,具体取决于PAM模块配置),系统会临时锁定该用户账户,即使后续输入正确密码也无法登录。

如何判断账户是否被锁定?

通过SSH登录时,若提示"Permission denied"且错误信息中包含"authentication failure repeated"或"account locked",则可能是账户被锁定,也可通过以下命令在本地终端检查用户锁定状态:

sudo faillock --user <用户名>

若返回登录失败记录(如"Failed password 3 times"),说明账户已被锁定。

解决方法

方法1:手动解锁账户(需本地登录或拥有sudo权限)

  1. 通过控制台或VNC登录Ubuntu系统(若SSH已无法使用);
  2. 执行以下命令解锁指定用户:
    sudo faillock --user <用户名> --reset

    解锁用户"ubuntu":sudo faillock --user ubuntu --reset

  3. 解锁后重新尝试SSH登录。

方法2:调整PAM锁定策略(避免再次被锁)

若频繁因误输密码被锁,可修改PAM配置调整锁定阈值:

  1. 编辑/etc/pam.d/common-auth文件:
    sudo nano /etc/pam.d/common-auth
  2. 找到类似auth required pam_faillock.so preauth silent deny=3 unlock_time=600的行,将deny=3改为更大值(如deny=5),即允许5次错误尝试;
  3. 保存文件(Ctrl+O,回车,Ctrl+X),重启SSH服务:sudo systemctl restart sshd

SSH服务配置问题:禁用密码登录或认证方式错误

Ubuntu的SSH服务(sshd)默认允许密码登录,但若配置文件被修改,可能导致密码认证失效,即使密码正确也无法登录。

检查SSH是否允许密码登录

SSH配置文件/etc/ssh/sshd_config中,PasswordAuthentication参数控制是否启用密码认证,若该值被设为no,则只能通过SSH密钥登录,密码认证会被拒绝。

解决方法

  1. 登录Ubuntu本地终端(或通过VNC),编辑SSH配置文件:
    sudo nano /etc/ssh/sshd_config
  2. 找到PasswordAuthentication行,确保其值为yes(若被注释,取消注释并设置):
    PasswordAuthentication yes
  3. 保存文件后,重启SSH服务使配置生效:
    sudo systemctl restart sshd

检查是否强制使用密钥认证

若服务器配置了PubkeyAuthentication yes且未设置PasswordAuthentication yes,SSH会优先尝试密钥认证,若客户端未提供密钥,直接返回密码错误提示。

解决方法
若需要同时支持密码和密钥登录,确保/etc/ssh/sshd_config中包含:

PubkeyAuthentication yes
PasswordAuthentication yes

仅需要密钥登录时,保持PasswordAuthentication no,但需确保客户端已配置正确的SSH密钥(见下文)。

检查SSH服务是否运行

若SSH服务未启动,客户端连接时会直接提示"Connection refused"(非密码错误),但若服务异常中断,可能返回模糊的认证错误。

解决方法
检查SSH服务状态:

sudo systemctl status sshd

若未运行,启动服务并设置开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码