如何在对远程计算机执行 ssh 测试时创建“远程主机标识已更改”状态

如何在对远程计算机执行 ssh 测试时创建“远程主机标识已更改”状态

我们希望使远程 Linux 计算机的状态返回

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r", 

当我们通过 ssh 连接到它时,我们更改了本地文件(beta 机器)中公钥的一个字符,/root/.ssh/known_hosts以强制发生此错误。

但这并没有发生。

当我们从 beta 机器 ssh 到远程机器时

ssh alpha1

我们获得了远程机器的访问权限,但没有收到错误:

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r", 

我们如何模拟这种场景并强制发生这个错误?

答案1

保留第一个标记(IP 地址和端口)并将其余部分替换为同一文件中其他主机的指纹。

刚刚测试了一下,它确实出现了你正在寻找的错误。

答案2

请注意,我还没有测试过,但它应该可以工作。

要触发警告(警告:远程主机标识已更改!),您也可以更改服务器端的私钥/公钥对,这样做的额外好处是您只需要在单个主机上进行配置更改,更改将应用​​于所有连接的客户端,而如果您只对已知主机(/home/user/.ssh/known_hosts)进行客户端配置编辑,则需要在每个要显示警告的客户端上执行此操作。

在服务器上的 /etc/ssh/sshd_config 中,你会发现类似这样的条目

HostKey /etc/ssh/ssh_host_ed25519_key

在服务器上生成新的密钥对来替换旧的密钥对:

sudo ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -N '' -t ed25519

对于每个连接的客户端,密钥很可能都会在服务器上重新加载,如果没有,请重新启动 sshd。

请参阅 sshd_config 文档中有关 HostKey 的信息

引用:

指定包含 SSH 使用的私有主机密钥的文件。可以有多个主机密钥文件。对于 SSH 协议版本 2,默认为 /etc/ssh/ssh_host_dsa_key、/etc/ssh/ssh_host_ecdsa_key、/etc/ssh/ssh_host_ed25519_key 和 /etc/ssh/ssh_host_rsa_key。

相关内容