Linux SSH无法登录需从客户端、网络、服务端三方面排查:先确认sshd服务运行及22端口监听,再测试网络连通性与防火墙策略,接着核对sshd_config配置(如PermitRootLogin、PasswordAuthentication等),最后通过/var/log/auth.log或secure日志定位具体错误原因。
Linux SSH无法登录,通常不是单一原因导致,需从客户端、网络、服务端三方面逐步排查。重点先确认SSH服务是否运行、端口是否可达、认证方式是否匹配。
检查SSH服务状态和端口监听登录服务器本地(或通过控制台),执行以下命令:systemctl status sshd(Ubuntu/Debian)或systemctl status ssh(CentOS/RHEL),确认服务处于active (running)状态;若为 inactive 或 failed,尝试sudo systemctl start sshd并查看日志(journalctl -u sshd -n 50 -f)
ss -tlnp | grep :22或netstat -tuln | grep :22,确认sshd进程确实在 0.0.0.0:22(或指定端口)监听;若只监听 127.0.0.1,则外部无法连接,需检查/etc/ssh/sshd_config中ListenAddress配置如修改过默认端口(如改为 2222),客户端连接时必须显式指定:ssh -p 2222 user@host验证网络连通性与防火墙策略从客户端机器测试基础连通性和端口可达性:Trae linux Trae Linux 官方版本现已全面上线,开发者可直接访问 Trae 官网(trae.cn 国内版或 trae.ai 国际版)获取专属安装包。该版本完美适配主流 Linux 发行版,提供 .deb(适配 Ubuntu/Debian)、.rpm(适配 RHEL/Fedora)以及通用 .tar.gz 格式,并全面支持 x64 与 ARM64 架构。
下载ping server_ip:确认IP层可达(注意部分服务器禁ping,失败不等于网络不通)
telnet server_ip 22或nc -zv server_ip 22:直接测试TCP端口是否开放;若超时或拒绝连接,说明中间存在拦截
检查服务器本地防火墙:
sudo ufw status(Ubuntu)或sudo firewall-cmd --list-all(CentOS),确保22端口已放行;临时关闭测试:sudo ufw disable或sudo systemctl stop firewalld云服务器(如阿里云、腾讯云)还需检查安全组规则,确认入方向允许来源IP访问对应端口核对SSH配置与用户权限常见配置错误会静默拒绝连接,需仔细检查/etc/ssh/sshd_config:PermitRootLogin:若设为no,root用户将被拒绝;使用普通用户登录后再提权PasswordAuthentication:若为no且未配置密钥登录,密码方式将失效AllowUsers或DenyUsers:确认当前登录用户未被显式禁止PubkeyAuthentication yes且AuthorizedKeysFile .ssh/authorized_keys路径正确;检查用户家目录及.ssh
权限:
chmod 700 ~/.ssh,chmod 600 ~/.ssh/authorized_keys,chown -R $USER:$USER ~/.ssh查看日志定位具体拒绝原因最有效的方式是实时观察服务端日志:
在服务器执行:
sudo tail -f /var/log/auth.log(Debian/Ubuntu)或sudo tail -f /var/log/secure(CentOS/RHEL)
同时从客户端发起一次连接,观察日志中出现的提示,例如:•"Connection closed by authenticating user"→ 认证阶段异常(密钥格式错、权限不对)
•"User xxx from xxx not allowed because not in AllowUsers"→ 用户被配置限制•"Failed password for root"→ 密码错误或 PasswordAuthentication 关闭•"fatal: no matching mac found"→ 客户端与服务端MAC算法不兼容(较新OpenSSH可能禁用旧算法,需升级客户端或调整Macs配置)
