SSHD服务启动失败

admin
2021-11-21 / 0 评论 / 4 阅读 / 正在检测是否收录...

一台在线才5天的服务器,用 lastb |wc -l 统计了下,有近十万次的暴力破解登录失败记录。

隧想改下 sshd 的监听端口,免得招蜂引蝶。

打开配置文件 /etc/ssh/sshd_config 把默认的22端口改成高位端口后,用 systemctl restart sshd.service 重启sshd服务失败。

报错如下:

Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

systemctl status sshd.service 的输出如下:

● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since 四 2018-09-27 10:10:42 CST; 38s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 47324 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=255)
Main PID: 47324 (code=exited, status=255)

9月 27 10:10:42 english systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
9月 27 10:10:42 english systemd[1]: Failed to start OpenSSH server daemon.
9月 27 10:10:42 english systemd[1]: Unit sshd.service entered failed state.
9月 27 10:10:42 english systemd[1]: sshd.service failed.

没啥有用的提示,再看 journalctl -xe

-- Unit sshd.service has begun starting up.
9月 27 10:12:07 english sshd[47352]: error: Bind to port 23389 on 0.0.0.0 failed: Permission denied.
9月 27 10:12:07 english sshd[47352]: error: Bind to port 23389 on :: failed: Permission denied.
9月 27 10:12:07 english sshd[47352]: fatal: Cannot bind any address.
9月 27 10:12:07 english systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
9月 27 10:12:07 english systemd[1]: Failed to start OpenSSH server daemon.
-- Subject: Unit sshd.service has failed
-- Defined-By: systemd

说我没权限绑定 23389 端口,老夫是 root 咋会没权限呢?

/var/log/messages 里面没有啥有用的提示, /var/log/secure 里面的提示跟上面显示一样,没权限。两头雾水。

经验告诉我,当日志里面没明显提示,而服务又是和安全相关的时候,锅往 selinux 上甩准没错,果然 getenforce 返回的是 Enforcing 。
执行 setenforce 0 关闭 selinux 后,一切正常。

最后提醒下,修改 sshd 配置文件属于高危操作,要慎之又慎,如上文,端口改成23389后,你重启sshd服务让修改生效,重启这个动作分解是这样的:

1、停止SSHD服务
2、用修改后的新配置文件启动SSHD服务,而此时配置文件有误,无法启动SSHD。

无法启动SSHD服务,这想想都刺激呢?若是云服务器还好,可以通过web控制台的console连接上去操作,若是托管在IDC机房的机器,只能去机房接显示器了。

比较安全的方法就是用一个脚本每隔20分钟把正确的sshd配置文件覆盖回来,然后启动SSHD服务,当你确认修改成功后,再取消掉这个脚本。

0

评论 (0)

取消