2

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

所以首先我尝试这样做以连接到主机。我将 .ssh 文件夹中的文件 id_rsa.pub 从客户端复制到主机的 .ssh 文件夹中名为 authorized_keys 的文件中。然后当我“ssh root@hostname”它工作正常,我不需要输入密码(注意我客户的帐户不是root)。

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

有没有人有线索:>

4

1 回答 1

3

是的,这是正确的行为。

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

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

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

此机制旨在确保您已登录到您希望登录的系统。

在您的情况下,您首先在端口 22 的 IP abcd 登录系统。然后您尝试在端口 5555 使用相同的 IP abcd 登录。此端口后面的虚拟机具有不同的指纹。所以 ssh 抱怨。

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

于 2012-09-24T22:07:44.097 回答