错误现象
当你尝试启动 OpenSSH 服务时,系统提示类似以下信息:
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xe" for details.
或直接显示:“Failed to start openssh server”。
常见原因
- SSH 配置文件(
/etc/ssh/sshd_config)存在语法错误 - 端口被占用(如 22 端口已被其他程序使用)
- OpenSSH 服务未正确安装
- 权限问题(如私钥文件权限过宽)
- SELinux 或 AppArmor 安全策略限制
解决步骤
- 查看详细日志:
运行sudo systemctl status ssh或sudo journalctl -u ssh获取具体错误信息。 - 检查配置文件:
使用sudo sshd -t测试/etc/ssh/sshd_config是否有语法错误。 - 释放端口:
若端口冲突,可通过sudo ss -tulnp | grep :22查看占用进程并终止,或修改Port配置项。 - 修复文件权限:
确保私钥权限为 600:
sudo chmod 600 /etc/ssh/ssh_host_*_key - 重新安装 OpenSSH(如必要):
Ubuntu/Debian:sudo apt install --reinstall openssh-server
CentOS/RHEL:sudo yum reinstall openssh-server
预防建议
- 修改配置前先备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - 使用非 root 用户远程管理,避免直接暴露 root 登录
- 定期更新系统和 OpenSSH 软件包