sudo systemctl restart sshd
(或 sudo systemctl restart ssh
),2. **SysVinit系统**:sudo service sshd restart
(或 sudo service ssh restart
)重启SSH服务的核心命令
根据Linux发行版选择对应命令:
-
Systemd系统(Ubuntu 16.04+/Debian 8+/CentOS 7+)
sudo systemctl restart sshd # CentOS/RHEL/Fedora sudo systemctl restart ssh # Ubuntu/Debian
-
SysVinit系统(旧版Debian/Ubuntu/CentOS 6)
sudo service ssh restart # Debian/Ubuntu sudo service sshd restart # CentOS 6
-
直接调用初始化脚本
sudo /etc/init.d/ssh restart # Debian/Ubuntu sudo /etc/init.d/sshd restart # CentOS
操作步骤详解
-
检查SSH服务状态(重启前)
确认服务是否运行,避免误操作:sudo systemctl status sshd # 或 ssh
输出中显示
active (running)
表示服务正常。 -
重启SSH服务
执行对应发行版的命令(见第一部分),例如Ubuntu:sudo systemctl restart ssh
-
验证重启结果
- 检查服务状态:
sudo systemctl status sshd
- 查看SSH端口(默认22)是否监听:
sudo ss -tuln | grep :22
- 检查服务状态:
关键注意事项
-
连接中断风险
- 重启不会断开现有连接:已建立的SSH会话会保持(除非修改了监听端口或
MaxStartups
等关键参数)。 - 新配置即时生效:重启后新连接将应用新配置(如
sshd_config
中的设置)。
- 重启不会断开现有连接:已建立的SSH会话会保持(除非修改了监听端口或
-
替代方案:重载配置(无需重启)
修改配置文件后,可仅重载配置而不中断服务:sudo systemctl reload sshd # 或 ssh
适用场景:修改端口、密钥算法等非会话相关参数。
-
确保备选访问途径
- 重启前建议通过本地控制台或VNC登录服务器,防止网络配置错误导致失联。
- 测试命令语法:使用
systemctl restart sshd --dry-run
(部分发行版支持)预检查。
-
开机自启设置
避免服务器重启后SSH未启动:sudo systemctl enable sshd # 启用自启
故障排查
- 启动失败常见原因
sshd_config
语法错误:用sudo sshd -t
检查配置。- 端口冲突:
Address already in use
需修改端口或结束占用进程。 - SELinux/防火墙拦截:临时禁用
setenforce 0
或放行端口。
- 查看日志定位问题
journalctl -u sshd -xe # Systemd日志 tail -f /var/log/auth.log # Debian/Ubuntu tail -f /var/log/secure # CentOS/RHEL
安全建议
- 修改默认SSH端口(如
Port 2222
)减少扫描攻击。 - 禁用root登录:
PermitRootLogin no
。 - 使用密钥认证替代密码。
- 配置防火墙(如
ufw
或firewalld
)仅允许可信IP访问。
引用说明基于Linux官方文档(OpenSSH)及主流发行版实践指南(Ubuntu、CentOS),操作前请确认您的系统版本,必要时参考对应发行版手册。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/46089.html