SSH连接被拒绝需依次排查sshd服务状态、系统防火墙、宝塔防火墙及云平台安全组:先用systemctl status sshd确认运行,再检查firewalld/ufw和宝塔安全页面端口放行,最后核查云厂商安全组规则是否开放22端口。

宝塔面板SSH连接被拒绝,先确认sshd服务是否在运行
“连接被拒绝”不是网络不通,而是服务器根本没在监听 SSH 端口——最常见原因是 sshd 进程没起来,或者被意外停止。
- 登录服务器控制台(如阿里云/腾讯云网页 VNC),执行
systemctl status sshd,看状态是不是active (running) - 如果显示
inactive (dead),直接运行systemctl start sshd启动;若提示找不到命令,说明 OpenSSH 服务根本没装,需先yum install -y openssh-server(CentOS)或apt install -y openssh-server(Ubuntu/Debian) - 启动后记得加自启:
systemctl enable sshd,否则重启后又连不上
检查防火墙是否放行了22端口(或你自定义的 SSH 端口)
宝塔自带防火墙和系统防火墙(firewalld 或 ufw)可能同时拦截,只关一个没用。
- 查宝塔面板防火墙:进入「安全」页面,确认
22(或你改过的端口)在放行列表里,且状态是“已放行” - 查系统级防火墙:
firewall-cmd --list-ports(CentOS 7+)或ufw status(Ubuntu),看22/tcp是否在输出中 - 别只依赖宝塔界面——它不管理
iptables规则。如果用的是老系统(如 CentOS 6),得手动检查:iptables -L -n | grep :22 - 临时放行测试:比如用
firewall-cmd --add-port=22/tcp --permanent && firewall-cmd --reload,避免改错后锁死自己
确认/etc/ssh/sshd_config里没禁用密码登录或监听地址写死了
配置文件一改错,sshd 可能静默失败,连报错都不给你看。
- 重点检查三行:
Port(是否和你尝试连接的端口一致)、ListenAddress(是否写成了127.0.0.1,导致只允许本地连)、PermitRootLogin(如果用 root 登录但设为no,会直接拒连) - 改完必须重载:
systemctl reload sshd,不是 restart——reload 不中断已有连接,更安全 - 测试配置语法是否合法:
sshd -t,如果报错(比如Missing privilege separation directory),别硬 reload,先按提示修复 - 宝塔修改过 SSH 端口?那连接时必须显式指定,比如
ssh -p 2222 user@ip,否则默认走 22
云服务器厂商安全组没开22端口才是真·连接被拒绝
很多人查完服务器所有环节都正常,还是连不上——卡在最外层:云平台的安全组规则。
- 登录阿里云控制台 → ECS → 实例 → 安全组 → 配置规则,确认入方向有
22/tcp(或你改的端口),授权对象至少包含你的 IP 或0.0.0.0/0(测试用) - 腾讯云叫“网络ACL”和“安全组”,华为云叫“安全组规则”,名字不同,功能一样:不配,流量压根到不了你的服务器网卡
- 安全组修改后**立即生效**,不用重启实例;但如果之前连着 SSH,新规则对已有连接无效,需断开重连
- 有些厂商(如 Vultr、DigitalOcean)后台没有图形化安全组,那就得靠
iptables或ufw自己拦,但默认是放通的——此时反而要怀疑是不是被暴力扫描封了 IP
真正麻烦的从来不是某一个开关,而是四个地方(sshd 进程、系统防火墙、宝塔防火墙、云平台安全组)只要有一个关着,就“连接被拒绝”。挨个验证比猜快得多,尤其别跳过云厂商那一层——它不在你的服务器上,systemctl 和 sshd_config 都管不到。

















