当前位置: 首页 > 工具软件 > Open Kraken > 使用案例 >

libgssapi_krb5.so.2: cannot open shared object file: No such file or directory

尚宏硕
2023-12-01

背景

rpm包krb5-libs被卸载,导致机器ssh不上

  1. 最近在升级kerberos的安装包,但是需要先将老版本的删除。于是在节点node1执行如下命令
$ rpm -qa | grep krb5
krb5-workstation-1.15.1-18.el7.x86_64
krb5-libs-1.15.1-18.el7.x86_64
krb5-devel-1.15.1-18.el7.x86_64
  1. 想着将老版本的rpm先删除(注:此时,还未将下载好的新版本的rpm包上传至服务器)。
rpm -e krb5-libs-1.15.1-18.el7.x86_64 --nodeps
  1. 执行完命令之后,发现***机器ssh不上了***。比较幸运的是,之前在另外一台机器上的tmux保存了连接到该台节点上的session,于是如获至宝般的想在那个session上进行一些抢救。

解决思路

想解决这个问题的核心是:重新安装krb5-libs的rpm包。现在要做的,就是将新下载的krb5-libs的rpm包上传至服务器。在上传的过程中,在node1(之前tmux连接到的session)上依次执行如下命令:

  1. 尝试用scp将远程的文件拷贝至本地,失败。
  2. 尝试用nc传文件,失败。
  3. yum直接安装krb5-libs的包,失败。
  4. sftp连接至远程服务器拷贝文件,失败。
  5. 以上4个命令均出现如下错误:

/usr/bin/ssh: error while loading shared libraries: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory

即: 这4个命令都依赖libgssapi_krb5.so.2这个包,但是该链接库已经在删除krb5-libs时被删掉了。

解决方法:Java通过Socket上传文件至目标节点

  1. 既然现有的工具都不能传文件,只能自己写一个传文件的程序。
  2. Java版通过Socket传文件网上有很多,随便一搜就能找到。
    • node1(异常节点)上启server端的代码。
    • node2(正常节点)上启client端的代码。
    • 依次启动serverclient的服务,将rpm文件上传至server端即可。
  3. node1上执行如下命令。
rpm -ivh krb5-libs-1.15.1-50.el7.x86_64.rpm
  1. 抢救成功。

教训

  1. 一定要先把rpm拷贝至服务器,再删除旧版本的包。
  2. rpm -ivh时,除非你知道自己的干啥,否则不要添加--nodeps的选项。
 类似资料: