在执行 ssh 到远程计算机进行测试时,如何创建远程主机标识已更改的场景

在执行 ssh 到远程计算机进行测试时,如何创建远程主机标识已更改的场景

我们想要从 Linux 远程机器返回状态

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

因此,我们更改本地文件(测试机)中远程计算机的特征之一,/root/.ssh/known_host以便进行此模拟

但这不会发生

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

ssh alpha1

我们无需获取即可访问远程计算机:

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

那么如何模拟这种场景呢?

答案1

可能有一些方法可以通过简单地修改 来做到这一点~/.ssh/known_hosts,但这里有一个使用sshd以普通用户身份运行的服务器的解决方案:

mkdir -m 700 /tmp/ssh
ssh-keygen -qN '' -f /tmp/ssh/1st
ssh-keygen -qN '' -f /tmp/ssh/2nd
/usr/sbin/sshd -h /tmp/ssh/1st -p 2222 -o PidFile=/tmp/ssh/pid
ssh -o StrictHostKeyChecking=no -p 2222 localhost true
kill $(cat /tmp/ssh/pid)
/usr/sbin/sshd -h /tmp/ssh/2nd -p 2222 -o PidFile=/tmp/ssh/pid

现在:

% ssh -p 2222 localhost true
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

然后ssh-keygen -R [localhost]:2222,冲洗,重复。您可以根据需要将其工具化。

相关内容