无法在 CentOS 7 上安装 ssh:文件 /usr/sbin/sshd 上的存档解压失败

无法在 CentOS 7 上安装 ssh:文件 /usr/sbin/sshd 上的存档解压失败

我遇到了 SSH 问题并尝试重新安装它。

所以首先我yum remove openssh-server openssh-clients成功了。

然后我尝试使用 重新安装它yum install openssh-server openssh-clients,但出现以下错误:

[...]
Downloading packages:
--------------------------------------------------------------------------------
Total                                              1.6 MB/s | 1.1 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing   : openssh-server-7.4p1-21.el7.x86_64                         1/2
Error unpacking rpm package openssh-server-7.4p1-21.el7.x86_64
 
error: unpacking of archive failed on file /usr/sbin/sshd: cpio: rename
  Installing   : openssh-clients-7.4p1-21.el7.x86_64                        2/2
Error unpacking rpm package openssh-clients-7.4p1-21.el7.x86_64
 
error: openssh-server-7.4p1-21.el7.x86_64: install failed
error: unpacking of archive failed on file /usr/bin/ssh: cpio: rename
  Verifying    : openssh-clients-7.4p1-21.el7.x86_64                        1/2 
  Verifying    : openssh-server-7.4p1-21.el7.x86_64                         2/2 

Failed:
  openssh-clients.x86_64 0:7.4p1-21.el7   openssh-server.x86_64 0:7.4p1-21.el7  

Complete!

我读到这可能是这些文件中引发的不可变标志的问题。事实上,当我使用:
lsattr /usr/sbin/sshd
我得到:
----i----------- /usr/sbin/sshd

但是当我这样做chattr -i /usr/sbin/sshd并再次检查lsattr标志i是否仍然存在时。

我怎样才能解决这个问题并能够再次安装 SSH?

我的CentOS版本是centos-release-7-9.2009.1.el7.centos.x86_64

我以 root (su) 身份执行所有这些操作。

答案1

当您卸载它时,它似乎尚未完全删除,请验证systemctl status sshd是否仍显示输出。您可以运行“sudo systemctl stop sshd”,然后尝试重新安装。如果仍然失败,请运行“sudo systemctl禁用sshd”,然后重新启动或至少注销并重新登录并重新安装。

答案2

当然这是一个当地的您从 shell 访问的 PC 请运​​行:

sudo chattr -i /usr/bin/ssh
echo $?
sudo chattr -i /usr/sbin/sshd
echo $?
sudo killall -9 sshd
pgrep sshd

现在您可以继续重新安装 openssh 服务器和客户端。

yum install openssh-server openssh-clients

附录:您不应该使用它chattr +i来“保护”您的系统,让我解释一下原因。每当您遭到黑客攻击时,攻击者都可能可以访问 root 帐户,然后他可以:

  • 删除不可变属性(大多数 Linux 铁杆黑客都清楚这一点)
  • 替换 SSH 守护进程使用的任何库,使其按照攻击者想要的方式工作
  • 添加额外的守护进程,以授予 SSHD 之外的完全访问权限
  • 替换内核或添加内核模块,这将改变/规避 SSHD 行为

相关内容