凌峰创科服务平台

SSH服务器为何拒绝密码?

核心原因总结

问题出在 “你提供的密码”“服务器上存储的正确密码” 不匹配,但导致不匹配的原因有很多,下面我们详细分析。

SSH服务器为何拒绝密码?-图1
(图片来源网络,侵删)

排查步骤(从最常见到最不常见)

请按照以下顺序逐一检查,这能帮你高效地解决问题。

第1步:检查基本输入错误(最常见)

这是最首要、最简单的检查,也是最容易忽略的。

  1. 大小写敏感:Linux/Unix 系统的密码是严格区分大小写的。Password123password123 是两个完全不同的密码,请确保你的 Caps Lock 键没有开启,并且输入的字母大小写完全正确。
  2. 隐藏字符:在输入密码时,为了安全,终端通常不会显示任何字符(光标不动),这容易让人误以为没输入进去,请务必完整输入你的密码,然后按回车。
  3. 多输入或少输入:仔细检查密码前后是否有多余的空格,或者是否漏掉了某个字符。

第2步:确认服务器端密码

有时候问题不在你,而在服务器。

  1. 密码是否已更改:你是否在别的地方(比如通过控制台面板)修改了服务器密码?如果是,请确保你使用的是的密码。
  2. 账户是否被锁定:如果多次输错密码,有些服务器安全策略(如 fail2ban)可能会暂时锁定你的 IP 地址或账户,你需要等待一段时间(如5-10分钟)再试,或者联系服务器管理员解锁。
  3. 账户是否过期:有些公司或组织的系统会定期要求用户更改密码,旧密码会失效,确认你的账户密码是否仍在有效期内。

第3步:检查 SSH 服务端的配置(非常重要)

服务器被配置为不接受密码登录,这是一种提高安全性的做法。

SSH服务器为何拒绝密码?-图2
(图片来源网络,侵删)
  1. 检查是否禁用密码登录: 你需要登录到服务器上(比如通过控制台 VNC),然后检查 SSH 的主配置文件 /etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

    找到下面这一行:

    #PasswordAuthentication yes
    • 如果这一行被注释了(有 号),或者设置为 no,那就意味着服务器拒绝了所有密码登录

    • 解决方案:将其修改为 yes,然后保存文件,并重启 SSH 服务。

      SSH服务器为何拒绝密码?-图3
      (图片来源网络,侵删)
      # 修改文件
      sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
      # 或者
      sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
      # 重启SSH服务使配置生效 (根据系统不同选择一个)
      sudo systemctl restart sshd    # CentOS/RHEL/Fedora
      sudo systemctl restart ssh     # Debian/Ubuntu
  2. 检查是否允许你的用户登录: 同样在 sshd_config 文件中,检查 AllowUsersDenyUsers 指令。

    AllowUsers user1 user2

    如果你的用户名不在这个列表里,或者被 DenyUsers 指令禁止了,你也将无法登录,你需要联系管理员将你的用户名添加到允许列表中。

第4步:检查客户端端的配置

问题也可能出在你的电脑上。

  1. 检查 SSH 客户端配置文件: 在你的用户主目录下,检查是否存在 ~/.ssh/config 文件,这个文件可以为特定的服务器设置特殊的登录选项。 如果你为这个服务器设置了 PubkeyAuthentication yesPasswordAuthentication no,那么即使服务器本身允许密码登录,你的客户端也会尝试用密钥登录,失败后就不会再尝试密码了。 解决方案:检查并修改或删除这个文件中针对该服务器的错误配置。

  2. 尝试使用 -v 参数获取详细日志: 在你的终端里,使用 -v (verbose) 参数再次尝试连接,这会打印出详细的连接过程,帮助你定位问题在哪一步。

    ssh -v your_username@your_server_ip

    仔细查看输出,找到 auth (认证) 相关的信息,它会明确告诉你是在哪个环节失败的,

    • Permission denied (publickey,password). -> 这表示服务器同时拒绝了密钥和密码登录(通常是第3步的问题)。
    • Permission denied (publickey). -> 这表示服务器只接受密钥登录,拒绝了密码(通常是第3步中 PasswordAuthentication no 导致的)。
    • Permission denied (password). -> 这明确表示密码错误(通常是第1、2步的问题)。

第5步:网络和防火墙问题

虽然不常见,但有时网络也会捣乱。

  1. 防火墙:确保服务器的防火墙(如 ufw, firewalld 或云服务商的安全组)允许来自你 IP 地址的 SSH 连接(默认是 22 端口)。
  2. SSH 端口:确认你连接的端口号是否正确,默认是 22,但很多服务器会修改成其他端口(如 2222),检查你的连接命令 ssh -p 2222 user@ip 中的 -p 参数。

解决方案总结

问题现象 可能原因 解决方案
最常见 密码输错(大小写、空格、字符) 仔细核对,重新输入。
服务器配置 PasswordAuthentication 被设为 no 登录服务器,修改 /etc/ssh/sshd_config 文件,重启 SSH 服务。
账户问题 密码被改/过期/账户被锁 确认最新密码,或联系管理员解锁/重置密码。
客户端问题 SSH 客户端配置文件 指定了错误认证方式 检查并修改 ~/.ssh/config 文件。
网络问题 防火墙拦截SSH 端口错误 检查服务器防火墙规则,确认连接端口号。
排查工具 无法确定具体问题 使用 ssh -v user@ip 命令获取详细日志,分析失败原因。

建议操作流程

  1. 先用 ssh -v 命令连接,看日志输出。
  2. 如果日志显示 Permission denied (password),100% 是密码问题,回到第1、2步。
  3. 如果日志显示 Permission denied (publickey,password),99% 是服务器禁用了密码登录,直接去第3步检查服务器配置。

希望这些步骤能帮助你成功解决问题!

分享:
扫描分享到社交APP
上一篇
下一篇