运行级别 3 上的 ssh 服务器

God*_*eer 2 sshd runlevel scientific-linux redhat-enterprise-linux

我一直在尝试在桌面上设置 ssh 服务器以进行远程访问,但遇到了一些问题。我发现的第一个是 sshd 没有在启动时启动。一旦我运行:

sudo service sshd start
Run Code Online (Sandbox Code Playgroud)

手动我能够从自身 ssh 进入计算机,所以我知道 ssh 守护程序已正确安装。现在我只希望它在启动时启动。

调查后我发现

/etc/rc.d/rc3.d 
Run Code Online (Sandbox Code Playgroud)

我找到了一个脚本

K##sshd
Run Code Online (Sandbox Code Playgroud)

或类似的规定。我相信 K 意味着当进入运行级别 3 时,它正在关闭 sshd。我需要做的只是创建一个文件 S##sshd 让它重新启动,或者有更好的方法来解决这个问题。我想在我凭直觉重命名和创建随机文件之前,我应该获得一些更有见地的意见。

Ric*_*lka 6

我相信 K 意味着当进入运行级别 3 时,它正在关闭 sshd

是的。K代表杀戮。

这是旧的 SystemV 风格的启动。基本脚本都在 init.d 中,并且在实际运行它们的 rc?.d 目录中有各种具有特定命名约定(S00...、K99...)的符号链接。

当您更改运行级别时,例如从 1 到 3,init 进程会生成一个脚本,该脚本进入旧运行级别 (/etc/rc.d/rc1.d/) 的目录并运行所有以 K 开头的脚本

K_NUMBER_some_service stop
Run Code Online (Sandbox Code Playgroud)

然后转到新运行级别的目录(在本例中为 /etc/rc.d/rc3.d)并运行所有以 S 开头的脚本

S_NUMBER_some_service start
Run Code Online (Sandbox Code Playgroud)

脚本按字母顺序运行,顺序通常由范围从 00-99的NUMBER确定。顺序很重要 - 您不想在开始联网之前启动 sshd。

理论上,如果您知道如何确定它应该运行的数量/顺序,您可以手动执行符号链接。大多数脚本将此订单号作为注释(尝试:)head /etc/rc.d/init.d/sshd。但是你最好使用合适的工具来完成这项工作。在 Redhat 上,有ntsysvsystem-config-services。如果您愿意,您甚至可以使用命令行工具chkconfig。我认为

chkconfig --level 2345 sshd on
Run Code Online (Sandbox Code Playgroud)

会做你想做的。验证chkconfig --list sshd