gpt4 book ai didi

ssh - 从 guest 虚拟机运行 VBoxManage?

转载 作者:行者123 更新时间:2023-12-04 14:06:00 24 4
gpt4 key购买 nike

我需要在 vagrant/virtualbox 虚拟机上选择性地禁用主机时间同步。我可以像这样在主机上毫无问题地做到这一点:

$ VBoxManage setextradata <name> \
> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

问题是我只需要在 guest 虚拟机中完成一些工作时禁用同步。具体来说,单元测试作业需要能够以编程方式切换 GetHostTimeDisabled 值,从而有效地将 vm 系统时间完全控制给测试作业。

我考虑过在单元测试作业中通过 ssh 运行 VBoxManage 命令,但这带来了额外的困难。例如,以 vagrant 用户身份设置无密码登录到我的本地计算机。

我为虚拟机启用了 ssh 代理转发,并且它已确认工作正常。除非有人对“更好”的方式提出建议,否则我很感激能帮助您弄清楚如何以 vagrant 用户的身份从虚拟机(ubuntu linux)ssh 回到主机(OSX)。理想情况下,我希望它对 Vagrant 的所有用户都一样。也许以某种方式使用转发代理?

也许有一种方法可以在客户机上操纵 VBoxService 以暂时禁用时间同步?

最佳答案

我已经使用 ssh 在主机上运行 VBoxManage 命令解决了这个问题。

  1. 在你的 Vagrantfile 中启用 ssh 转发
    • 例如,config.ssh.forward_agent = true
  2. 让你自己像你自己一样通过 ssh 连接到你自己 ;)
    • 换句话说,将您自己的公钥复制到您自己的 authorized_keys 文件中
    • 例如,$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. 默认情况下将 VM 设置为 ssh(而不是 vagrant 用户)

    • 例如,通过 Vagrantfile 中的 shell 供应器:

        require 'etc'
      username = Etc.getlogin
      config.vm.provision :shell, :inline => "echo \"Host *\n User #{username}\" > /home/vagrant/.ssh/config"
  4. 像这样自由ssh回主机:(主机的默认NAT IP是10.0.2.2)

    $ ssh 10.0.2.2 'hostname'
    $ ssh 10.0.2.2 'VBoxManage setextradata <your vm name> \
    "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"'
    $ echo "GetHostTimeDisabled is now " && \
    ssh 10.0.2.2 'VBoxManage getextradata <your vm name> \
    "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"'

关于ssh - 从 guest 虚拟机运行 VBoxManage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com