ssh连接到qemu虚拟机来宾,而无需键入密码



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

因此,首先我尝试连接到主机。我将.ssh文件夹中的文件id_rsa.pub从客户端复制到.ssh文件夹下名为authorized_keys的主机文件中。然后当我"sshroot@hostname"它运行良好,我不需要输入密码(请注意,我的客户帐户不是root)。

然后我对主机中的虚拟机来宾尝试相同的操作。我把同样的文件复制给了客人。我使用qemu启动了guest,选项为"-net user,vlan=0,hostfwd=tcp::5555-:22",它将把从主机5555端口的请求转发到guest的22端口。然后在客户端中,我执行"ssh-p 5555root@hostname"它失败了。这表明主机的RSA密钥已更改或其他什么。。。请注意,我的guest帐户也是root帐户,我可以使用Putty通过连接到主机的5555端口对guest进行ssh。我相信文件权限也得到了妥善处理。

有人知道吗:>

是的,这是正确的行为。

当你第一次连接到主机系统时,客户端机器上的ssh会问你,指纹为bla-bla-bla的机器是否真的是你想要连接的机器。您回答"是",ssh在您的客户端机器上将主机名、IP和指纹存储在文件~/.ssh/nknown_hosts中。然后,在所有后续连接过程中,它会验证指纹没有更改,因为更改表明身份验证过程需要您注意。不匹配可能有几个有效的原因:

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

当你确切地知道指纹不应该改变时,这表明你试图进入另一个系统。

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

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

解决问题的方法是登录到主机系统,然后从这个远程shell会话进入VM。此外,我建议您为这个"远程"连接生成另一对公钥/私钥。因此,当保存在主机上的私钥被泄露时,保存在工作站上的私钥仍然有效。

最新更新