启用SSH服务提示:Unit sshd.service could not be found.

项目场景:

业务侧升级openssh导致主机失联,无法远程访问。

问题描述:

查看sshd服务进程显示正在运行中,但是Loaded 路径无效,

[root@ansible ~]# systemctl status sshd 
● sshd.service - OpenSSH server daemon 
  Loaded: loaded (ERROR) 
   Active: active (running) since Thu 2022-07-07 14:01:23 CST; 4 days ago Docs: man:sshd(8) 
     man:sshd_config(5)

重启sshd服务提示

[root@AnQuanGuanLi-2019-11 ~]# systemctl restart sshd 
Unit sshd.service could not be found.

关闭sshd服务在启动提示

[root@AnQuanGuanLi-2019-11 ~]# systemctl start sshd 
Unit sshd.service could not be found.

原因分析

根据故障现象,进行了逐一排查,发现业务侧升级openssh服务导致路径与系统默认识别不符。

第一、可能openssh服务安装异常。检查openssh安装程序。检查发现当前有安装openssh服务

[root@AnQuanGuanLi-2019-11 ~]# rpm -qa | grep openssh 
openssh-clients-7.4p1-16.el7.x86_64 
openssh-server-7.4p1-16.el7.x86_64 
openssh-7.4p1-16.el7.x86_64

第二、检查当前系统运行SSH版本

[root@AnQuanGuanLi-2019-11 /]# ssh -V 
OpenSSH_8.5p1, OpenSSL 1.1.1j 16 Feb 2021

第三、检索当前运行ssh服务安装路径

[root@AnQuanGuanLi-2019-11 /]# find / -iname openssh-8.5p1 
/usr/local/openssh-8.5p1 
/usr/openssh-8.5p1

处理步骤

使用命令启动/usr/openssh-8.5p1下的sshd服务

[root@AnQuanGuanLi-2019-11 ~]# /usr/bin/sshd

查看ssh服务是否启动,查看发现sshd服务已启动

[root@AnQuanGuanLi-2019-11 ~]# netstat -ntlp | grep 22

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 169409/sshd: /usr/b

openssh服务默认禁止root远程登陆

需要进入当前运行的sshd服务里修改sshd_config文件

[root@AnQuanGuanLi-2019-11 ~]# vim /usr/openssh-8.5p1/sshd_config

#PermitRootLogin prohibit-password 将默认的配置复制一条

PermitRootLogin yes 修改为允许登陆

找到当前运行的sshd服务,使用kill -9 杀掉行程,重新启动,使配置生效。

[root@AnQuanGuanLi-2019-11 ~]# kill -9 169409

使用命令启动/usr/openssh-8.5p1下的sshd服务

[root@AnQuanGuanLi-2019-11 ~]# /usr/bin/sshd

查看ssh服务是否启动,查看发现sshd服务已启动

[root@AnQuanGuanLi-2019-11 ~]# netstat -ntlp | grep 22

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 169409/sshd: /usr/b

结果验证

使用CRT 相关远程登陆远程测试。

知识拓展

linux中service *** start与直接运行/usr/bin/***的区别

在linux想要运行启动一个服务有两种方法:

1,运行/etc/init.d/目录下的shell脚本,还可以有快捷方式,service *** start/ stop/restart /status,

 2,直接运行/usr/bin目录下的服务文件;

第一种方法启动的程序可以通过service命令来管理,比如说查看状态 service --status-all

查看/etc/init.d目录,发现下面都是shell脚本,脚本里面运行的程序最终还是指向了/usr/bin下面的程序,只不过在shell脚本中可能直接对程序的一些运行参数继续进行了设置;

第二种方法,直接运行/usr/bin/****,如果运行时有配置文件的话,需要加上 --config *****,用这种方法启动程序后,不能用service命令查看状态;

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值