在 CentOS 上 SSH(通常是 sshd)无法启动,常见原因和排查/解决办法如下,按从快到慢的顺序来:
systemctl status sshd
journalctl -xe
根据报错信息通常能直接定位问题。
报错类似:
bind: Address already in use
检查:
ss -lntp | grep :22
解决:
/etc/ssh/sshd_config 的 Portsshd -t
如果有错,会直接提示哪一行有问题。
修改后重启:
systemctl restart sshd
报错类似:
Permissions 0644 for '/etc/ssh/ssh_host_rsa_key' are too open
解决:
chmod 600 /etc/ssh/ssh_host_*
chmod 644 /etc/ssh/*.pub
重新生成密钥(必要时):
ssh-keygen -A
getenforce
如果是 Enforcing:
setenforce 0
systemctl restart sshd
如果这样能启动,说明是 SELinux 策略问题,可:
restorecon -Rv /etc/ssh
SSH 起不来≠连不上,先确认是否启动成功:
systemctl is-active sshd
若已运行但连不上:
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
ls -ld /var/empty/sshd
应为:
drwxr-xr-x. root root
修复:
chown root:root /var/empty/sshd
chmod 755 /var/empty/sshd
df -h
磁盘满会导致 sshd 无法写日志。
如果你已经连不上服务器:
sshd -t
systemctl status sshd
journalctl -xe
如果你愿意,可以把 systemctl status sshd 或 journalctl 的报错内容贴出来,我可以直接帮你精确定位。