现在,我想从客户端计算机运行脚本,该脚本将SSH到主机上的虚拟机 guest 并开始运行Shell命令。我不想被提示输入密码。

因此,首先我尝试将其连接到主机。我将.ssh文件夹中的文件id_rsa.pub从客户端复制到主机的.ssh文件夹中的文件authorized_keys。那当我
“ssh root @ hostname”
它可以正常工作,我不需要输入密码(请注意我的客户的帐户不是root)。

然后,我对主机中的虚拟机 guest 尝试相同的操作。我复制了相同的文件给客人。我使用带有选项“-net user,vlan = 0,hostfwd = tcp::5555-:22”的qemu启动了 guest ,该请求会将请求从主机5555端口转发到 guest 的22端口。然后在客户端,我执行了
“ssh -p 5555 root @ hostname”
它失败。它显示主机的RSA密钥已更改或其他内容。。请注意,我的访客的帐户也是root用户,我可以使用Putty通过连接到主机的5555端口向访客SSH。而且我相信文件权限也得到了正确处理。

有谁有线索吗?

最佳答案

是的,这是正确的行为。

当您第一次连接到主机系统时,客户端计算机上的ssh会询问您带有指纹bla-bla-bla的计算机是否确实是您想要连接的计算机。您在客户端计算机上回答"is"和ssh,将主机名,IP和指纹存储在〜/ .ssh / known_hosts文件中。然后,在所有后续连接期间,它会验证指纹没有更改,因为更改表示身份验证过程需要引起您的注意。可能有一些不匹配的正当原因:

  • 您在远程主机上重新安装了sshd;
  • 您的主机使用DHCP获取其IP,并且该IP已更改。

  • 当您确切地知道指纹不应该更改时,这种情况将向您表明试图进入另一个系统。

    此机制旨在确保您已登录到预期要登录的系统。

    对于您的情况,您首先在端口22的IP a.b.c.d登录系统,然后尝试在端口5555使用相同的IP a.b.c.d登录。该端口后面的VM具有不同的指纹。所以ssh抱怨。

    您问题的解决方案是登录到主机系统,然后从该远程Shell session 登录到VM。另外,我建议您为此“远程”连接生成另一对公钥/私钥。因此,当您保留在主机上的私钥遭到破坏时,保留在工作站上的私钥仍然有效。

    10-07 13:16
    查看更多