温馨提示×

centos ssh启动不了咋办

小樊
50
2026-09-11 15:34:57
栏目: 智能运维

CentOS 下 SSH 起不来一般是 sshd 没装 / 没开 / 配置错 / 端口被挡 / 权限不对 这几类原因。可以按下面顺序一步步排查。


一、先确认你用的是哪种系统管理方式

CentOS 7 / 8 / Stream 一般用 systemd

systemctl status sshd

如果提示 Unit sshd.service could not be found,说明 sshd 可能没装


二、最常见原因和处理

1️⃣ sshd 没安装

rpm -qa | grep openssh-server

如果没有输出:

yum install -y openssh-server

2️⃣ sshd 服务没启动

systemctl start sshd
systemctl enable sshd

再看状态:

systemctl status sshd

3️⃣ 启动报错(重点看日志)

journalctl -xe
# 或
systemctl status sshd -l

常见错误:

❌ /var/empty/sshd 权限问题

chown root:root /var/empty/sshd
chmod 711 /var/empty/sshd

❌ 主机密钥丢失

ssh-keygen -A
systemctl restart sshd

4️⃣ 防火墙挡了 22 端口

firewall-cmd --list-all

没开就加:

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

5️⃣ SELinux 导致起不来(少见但坑)

临时测试:

setenforce 0

如果这样能起来:

restorecon -Rv /etc/ssh

6️⃣ 配置文件写错

sshd -t

有错误会直接提示哪一行有问题。


三、如果你连不上但不是服务挂了

  • 云服务器:检查 安全组是否放行 22
  • 本地虚拟机:确认网络模式(NAT / 桥接)
  • 改过端口:用 -p 端口 登录

四、快速自检清单 ✅

systemctl status sshd
sshd -t
journalctl -xe
firewall-cmd --list-all

如果你愿意,可以把下面命令的输出贴出来,我直接帮你判断:

systemctl status sshd
journalctl -xe | tail -n 30
sshd -t

0