记一次Openssh服务升级失败后的抢救措施

发布于 / 系统运维 / 1 条评论

事件起因:因openssh低版本有0day漏洞,所以尝试编译升级,没有快照直接上去一把梭。

我那么大一个服务呢?拉不起来了?

只能进入VNC尝试手动重装:

先删除所有openssh文件,卸载原有服务和配置文件

sudo apt-get purge openssh-server
find / -name "openssh*" | xargs rm -rf

重新安装服务,并启动

sudo apt-get install openssh-server
sudo systemctl start sshd

然而在这里我发现服务进程并没有启动,报错:

Failed to start ssh.service: Unit ssh.service is masked.
Failed to start sshd.service: Unit sshd.service is masked.

通常表示 SSH 服务已被禁用或者 systemd 服务单元被 “mask”(封锁)了,我尝试解封

sudo systemctl unmask ssh.service

sudo systemctl unmask sshd.service

然后重启服务,查看状态

sudo systemctl start sshd
sudo systemctl status sshd

这下似乎是启动起来了,回显:

ssh.service - LSB: OpenBSD Secure Shell server
     Loaded: loaded (/etc/init.d/ssh; generated)
     Active: active (exited) since Wed 2023-10-25 02:30:00 CST; 1min 56s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 17303 ExecStart=/etc/init.d/ssh start (code=exited, status=0/SUCCESS)
        CPU: 2ms

Oct 25 02:30:00 ryzen-vps systemd[1]: Starting LSB: OpenBSD Secure Shell server...
Oct 25 02:30:00 ryzen-vps systemd[1]: Started LSB: OpenBSD Secure Shell server.

但是我发现没有sshd进程在监听端口!

sudo netstat -tuln | grep ssh

并没有任何回显!果然事情没有这么顺利

我一时毫无头绪,然后看了一眼/etc/ssh目录下,发现是空文件夹,没有任何ssh的配置文件!我虽然用的是 purge 命令删除了服务和配置文件,但是安装新安装openssh它不会自动生成新的配置文件吗???很怪。

所以只能手动修复,先创建配置文件

sudo mkdir /etc/ssh
sudo nano /etc/ssh/sshd_config

写入一个基本配置参数

Port 22
Protocol 2
PermitRootLogin yes
PasswordAuthentication yes

手动生成 SSH 主机密钥:

sudo ssh-keygen -A

尝试再次启动服务

systemctl restart sshd

大功告成!

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 记一次Openssh服务升级失败后的抢救措施
  1. 阿飞

    所以要怎么才能正常升级