服务器测评网
我们一直在努力

Linux SSH被拒绝访问怎么办?常见原因及排查方法

在Linux系统中,SSH(Secure Shell)是远程管理服务器的核心工具,但用户有时会遇到“被拒绝访问”的报错,导致连接失败,这一问题通常涉及权限配置、网络服务、防火墙或认证机制等多个层面,需系统排查才能解决,以下从常见原因、诊断步骤及解决方案展开说明,帮助快速定位并修复问题。

Linux SSH被拒绝访问怎么办?常见原因及排查方法

权限与认证问题:最直接的拒绝原因

SSH连接被拒绝的首要检查点是用户权限及认证文件。
用户名或密码错误
这是最基础也最常见的问题,需确认输入的用户名是否存在于服务器中,以及密码是否正确,可通过cat /etc/passwd查看系统用户列表,或使用su - [用户名]切换目标用户验证密码。
SSH密钥认证失败
若使用密钥认证(如~/.ssh/id_rsa),需确保:

  • 客户端私钥与服务器端~/.ssh/authorized_keys中的公钥匹配;
  • 服务器端authorized_keys文件权限正确(需为600,即仅所有者可读写);
  • ~/.ssh目录权限为700,防止其他用户访问。
    可通过ssh -v [用户名]@[服务器IP]命令查看详细认证日志,定位密钥验证失败的具体环节。
    用户Shell被禁用
    若用户在服务器中的默认Shell设置为/sbin/nologin/bin/false,SSH登录会被拒绝,可通过修改/etc/passwd文件,将用户Shell改为/bin/bash等可交互Shell,[用户名]:x:UID:GID::/home/[用户名]:/bin/bash

SSH服务配置异常:服务端是否正常运行

当权限无误时,需检查SSH服务本身的状态及配置。
SSH服务未启动或崩溃
通过systemctl status sshd(或service ssh status)查看服务状态,若未运行,执行systemctl start sshd启动服务;若崩溃,检查/var/log/auth.log/var/log/secure中的错误日志,定位崩溃原因(如配置文件语法错误)。
配置文件限制登录
SSH服务配置文件/etc/ssh/sshd_config可能包含限制策略,需重点检查以下参数:

Linux SSH被拒绝访问怎么办?常见原因及排查方法

  • PermitRootLogin:若设置为no,root用户将无法直接登录,需切换为普通用户或临时改为yes测试;
  • AllowUsersDenyUsers:若定义了允许/拒绝的用户列表,需确认当前用户是否在允许范围内;
  • PasswordAuthentication:若设置为no,但未配置密钥认证,会导致密码登录被拒绝。
    修改配置后,需执行systemctl reload sshd使配置生效。

网络与防火墙问题:连接是否可达

即使服务正常,网络层面的拦截也会导致“被拒绝访问”。
防火墙拦截
Linux系统防火墙(如iptables、firewalld)或云服务商安全组可能阻止SSH默认端口(22),需确保:

  • iptables规则允许22端口:iptables -L -n | grep 22,若未允许,执行iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • firewalld服务:firewall-cmd --list-ports查看是否开放22端口,未开放则执行firewall-cmd --add-port=22/tcp --permanent并重载;
  • 云服务器安全组:在控制台入站规则中添加TCP协议、22端口,并允许源IP访问。
    网络连通性问题
    通过ping [服务器IP]测试网络是否可达,若能ping通但SSH失败,可能是端口未开放;若无法ping通,检查服务器网络配置或网关路由。
    SSH端口非默认
    若服务器修改了SSH端口(如Port 2222),客户端需使用-p参数指定端口:ssh -p 2222 [用户名]@[服务器IP],同时确保防火墙放行新端口。

客户端与服务端版本兼容性

老旧的SSH客户端可能与服务器端不兼容,导致加密算法或协议协商失败,可通过ssh -V查看客户端版本,服务器端版本可通过sshd -V查看,若版本差异过大,尝试升级SSH客户端(如sudo apt update && sudo apt upgrade openssh-client)或在客户端指定协议版本:ssh -o Protocol=2 [用户名]@[服务器IP]

Linux SSH被拒绝访问怎么办?常见原因及排查方法

Linux SSH被拒绝访问的排查需遵循“从简到繁”原则:先确认用户权限与认证,再检查服务状态与配置,最后排查网络与防火墙,通过ssh -v命令的详细日志,可快速定位具体错误环节,日常维护中,定期备份SSH配置文件、规范用户权限管理,能有效减少此类问题的发生,若问题复杂,建议结合服务器日志与网络抓包工具(如tcpdump)进一步分析。

赞(0)
未经允许不得转载:好主机测评网 » Linux SSH被拒绝访问怎么办?常见原因及排查方法