当 systemctl 无法重新启动 sshd 服务时,如何排除故障?

当 systemctl 无法重新启动 sshd 服务时,如何排除故障?

长话短说:我想重新启动该sshd服务,因为我认为它可能会解决我ssh在本地主机上使用的问题。 但我无法重新启动sshd服务;这就是我寻求帮助的问题。请参阅下面的终端输出。

我今天花了几个小时一直在寻找和尝试任何看起来可行的建议。我什至从备份中恢复了我的计算机两次。今天早上第一期之前的一个点。那没有帮助。还有一次是在我ssh昨天对配置进行任何操作之前进行的备份。即使从该备份恢复系统后,我仍然无法重新启动服务sshd,并且无法ssh在本地主机上使用。

我在日志中看到的唯一“线索”是这样一行/etc/ssh/sshd_config: Permission denied:但这似乎并没有什么意义。该文件的权限是 600。我尝试将权限一直开放到 777。尽管如此,/etc/ssh/sshd_config: Permission denied日志日志中仍添加了同一行。

如果您知道一组不同的日志,我可以在其中找到此问题的线索,请告诉我。如果您遇到过这个问题并解决了,请分享。

如果您的建议针对特定发行版,我的计算机目前运行的是 Fedora 37。

聚苯乙烯 我尝试/usr/sbin/sshd在终端中单独运行该命令。据我所知,这与该服务要运行的命令相同。当我在终端中运行该命令时,它起作用了!该命令不退出。当它运行时,我可以ssh毫无问题地使用。我需要使用 crtl+c 来结束/usr/sbin/sshd命令。那么为什么sshd.service工作会失败呢?

以下是相关命令及其输出的部分:

$ sudo systemctl restart sshd
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xeu sshd.service" for details.
$ systemctl status sshd.service
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled)
     Active: activating (auto-restart) (Result: exit-code) since Sun 2023-01-22 13:17:17 EST; 13s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 101315 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=1/FAILURE)
   Main PID: 101315 (code=exited, status=1/FAILURE)
        CPU: 16ms

$ journalctl -xeu sshd.service
...
Jan 22 13:19:22 fedora systemd[1]: Stopped sshd.service - OpenSSH server daemon.
   Subject: A stop job for unit sshd.service has finished
   Defined-By: systemd
   Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
   
   A stop job for unit sshd.service has finished.
   
   The job identifier is 11286 and the job result is done.

Jan 22 13:19:22 fedora systemd[1]: Starting sshd.service - OpenSSH server daemon...
   Subject: A start job for unit sshd.service has begun execution
   Defined-By: systemd
   Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
   
   A start job for unit sshd.service has begun execution.
   
   The job identifier is 11286.
Jan 22 13:19:22 fedora sshd[101395]: /etc/ssh/sshd_config: Permission denied
Jan 22 13:19:22 fedora systemd[1]: sshd.service: Main process exited, code=exited, status=1/FAILURE
   Subject: Unit process exited
   Defined-By: systemd
   Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
   
   An ExecStart= process belonging to unit sshd.service has exited.
   
   The process' exit code is 'exited' and its exit status is 1.
Jan 22 13:19:22 fedora systemd[1]: sshd.service: Failed with result 'exit-code'.
   Subject: Unit failed
   Defined-By: systemd
   Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
   
   The unit sshd.service has entered the 'failed' state with result 'exit-code'.
Jan 22 13:19:22 fedora systemd[1]: Failed to start sshd.service - OpenSSH server daemon.
   Subject: A start job for unit sshd.service has failed
   Defined-By: systemd
   Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
   
   A start job for unit sshd.service has finished with a failure.
   
   The job identifier is 11286 and the job result is failed.

答案1

我在日志中看到的唯一“线索”是声明 /etc/ssh/sshd_config: Permission returned 的行。但这似乎并没有什么意义。

这意味着你的 ssh 无法启动。找到你的理由了!

但这似乎并没有什么意义。该文件的权限是600。我尝试将权限一直开放到777

不要这样做,当某些不应该是全局可写的配置文件时,OpenSSH 往往会阻止启动(有充分的理由;使用 777,每个用户都可以将 sshd 配置为允许 root 登录而不检查任何凭据)。

这里的提示是这并没有发生,但 SSH 服务器仍然无法读取配置文件。

我敢打赌,不知何故(我从未发生过这种情况)sshd.config 的 SELinux 域被搞乱了。

 sudo fixfiles onboot

然后重新启动应该可以解决这个问题。

相关内容