普通网友 2025-05-16 16:00 采纳率: 98.2%
浏览 46
已采纳

Linux SSH通过Xshell连接时提示“Access denied”,如何解决?

在使用Xshell通过SSH连接Linux服务器时,若遇到“Access denied”提示,通常由以下原因导致:1) 用户名或密码错误;2) SSH服务未启用密码认证;3) 防火墙阻止SSH端口(默认22);4) IP地址被限制访问。解决方法如下:首先确认用户名和密码正确无误;检查服务器的`/etc/ssh/sshd_config`文件,确保`PasswordAuthentication yes`已启用并重启SSH服务(`systemctl restart sshd`);验证防火墙规则,允许SSH端口通过(`firewall-cmd --add-port=22/tcp --permanent`然后`firewall-cmd --reload`);最后,检查`/etc/hosts.allow`和`/etc/hosts.deny`文件,确保当前IP未被拒绝。若问题依旧存在,可通过服务器本地查看SSH日志(如`/var/log/secure`或`/var/log/auth.log`),进一步定位原因。
  • 写回答

1条回答 默认 最新

  • 薄荷白开水 2025-05-16 16:01
    关注

    1. 初步排查:用户名和密码验证

    当使用Xshell通过SSH连接Linux服务器时,如果遇到“Access denied”提示,最直接的原因可能是用户名或密码错误。请仔细检查输入的用户名和密码是否正确。

    • 确保区分大小写。
    • 避免因复制粘贴导致的隐藏字符问题。

    此外,可以尝试在本地终端中使用以下命令进行测试:

    ssh username@server_ip

    2. 深入分析:配置文件与服务状态

    如果用户名和密码无误,但仍然无法登录,可能是因为SSH服务未启用密码认证。以下是具体解决步骤:

    1. 检查`/etc/ssh/sshd_config`文件中的配置项:
      PasswordAuthentication yes
    2. 保存修改后,重启SSH服务以应用更改:
      systemctl restart sshd

    此步骤确保服务器允许基于密码的身份验证。

    3. 高级排查:防火墙与网络限制

    防火墙规则或网络限制可能导致SSH连接失败。以下是排查方法:

    步骤操作
    1检查防火墙是否阻止SSH端口(默认22):
    firewall-cmd --list-all
    2添加SSH端口到防火墙规则并重新加载:
    firewall-cmd --add-port=22/tcp --permanent
    firewall-cmd --reload

    确认防火墙已允许SSH端口通信。

    4. 综合诊断:访问控制与日志分析

    若以上步骤仍未解决问题,可能是访问控制列表(ACL)限制了IP地址访问。检查以下文件:

    • `/etc/hosts.allow`:确保包含允许访问的IP地址。
    • `/etc/hosts.deny`:确保当前IP未被拒绝。

    最后,查看SSH日志以获取更多详细信息:

    cat /var/log/secure

    对于某些发行版,日志文件可能位于`/var/log/auth.log`。

    5. 流程图:问题排查逻辑

    以下是完整的排查流程图:

    graph TD
        A[开始] --> B{用户名和密码错误?}
        B --是--> C[检查用户名和密码]
        B --否--> D{密码认证未启用?}
        D --是--> E[修改sshd_config并重启服务]
        D --否--> F{防火墙阻止SSH端口?}
        F --是--> G[调整防火墙规则]
        F --否--> H{IP地址受限?}
        H --是--> I[检查hosts.allow/deny]
        H --否--> J[查看SSH日志]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 5月16日