尽管从“known_hosts”中删除了指定的密钥,但仍然出现“ssh failure: Offending RSA key in /var/lib/sss/pubconf/known_hosts”

adr*_*rin 8 linux ssh openssh

我知道类似的问题已经被问过很多次了,但这里有所不同:

尝试通过 ssh 连接到我得到的服务器:

$ ssh cl11lx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
07:51:03:4e:5e:ba:e8:44:70:77:cb:57:78:57:59:35.
Please contact your system administrator.
Add correct host key in /nethome/ajalali/.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:8
  remove with: ssh-keygen -f "/var/lib/sss/pubconf/known_hosts" -R cl11lx
ECDSA host key for cl11lx has changed and you have requested strict checking.
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

我发现的最相关的问题是here,它是作为这个问题的副本而关闭的,而这个问题本身是作为离题关闭的。但无论如何它们都不一样。另一个相关问题在这里问。

在大多数情况下,正如我们所知,您可以通过替换服务器密钥来解决问题,例如运行:

ssh-keygen -R <host>
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案和从文件中删除有问题的密钥都/var/lib/sss/pubconf/known_hosts没有解决我的问题。

一旦我删除了整个文件,或者删除了有问题的密钥,密钥就回来了。

请注意,我的所有系统都是 freeipa 服务器的成员,该服务器本身是后端的 LDAP/Kerberos。

adr*_*rin 10

正如在发布的日志中所见,有问题的密钥不在其正常位置,即$HOME/.ssh/known_hosts,而是位于/var/lib/sss/pubconf/known_hosts. 这表明系统安全服务守护进程又名sssd正在从另一个来源获取有问题的密钥。

这就是为什么从文件中删除密钥无效的原因,因为它会一遍又一遍地从服务器重新获取。

在这种情况下,服务器是 FreeIPA 服务器。因此,要解决此问题,必须更改 IPA 服务器发送的违规密钥。

这可以通过手动更改服务器上的密钥来完成,或者从服务器中完全删除主机信息,然后重新安装客户端(通过ipa-client-install)。

在客户端上重新安装操作系统后,我的问题发生了。因此,从服务器中删除主机信息并重新安装 IPA 客户端对我来说是一个明智的选择。