我在 Windows 7 64 位主机上与几个 Linux 客户机运行 virtualbox 4.3.16。
我需要能够从一个客户机向另一个客户机发出关机命令,但是vboxmanage
通过 cygwin 的 SSH 服务器运行时该命令不起作用。
vboxmanage
在主机上的 cygwin shell 中运行时工作正常,但通过 SSHvboxmanage list vms
运行没有任何输出,并且无法访问虚拟机。
这是我尝试通过 SSH 关闭一台虚拟机时得到的结果:
$ vboxmanage --nologo controlvm "rsfe1" poweroff
vboxmanage.exe: error: Could not find a registered machine named 'rsfe1'
vboxmanage.exe: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee IUnknown
vboxmanage.exe: error: Context: "FindMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at line 95 of file VBoxManageControlVM.cpp
尝试将 VM “附加”到 sshd 帐户也不起作用:
$ vboxmanage registervm "d:\virtual machines\rsfe1\rsfe1.vbox"
vboxmanage.exe: error: A differencing image of snapshot {10077c46-d5cf-4402-88c0-f0458dd07f74} could not be found. Could not find an open hard disk with UUID {9404b00e-7b04-460f-8a62-6495885744de}
vboxmanage.exe: error: Details: code E_FAIL (0x80004005), component SnapshotMachine, interface IMachine, callee IUnknown
vboxmanage.exe: error: Context: "OpenMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at line 88 of file VBoxManageMisc.cpp
所有虚拟机都是在我的常规用户帐户下创建的myuser
。我也通过 SSH 进行身份验证myuser
。
我猜问题在于 cygwin SSHd 以特权用户身份运行cyg_server
,并且当会话转移到时,登录时某些东西无法正常工作myuser
。
我曾尝试运行 cygwin SSHd 服务,myuser
但该服务似乎需要比帐户拥有的更多的权限,因此无法运行。
有没有什么解决办法? 是否有可能对环境变量进行操作?
答案1
是的,这很痛苦。我最终做了一个复杂的工作来解决这个问题,正是因为 VirtualBox、Cygwin、身份验证和相应服务运行的用户存在很多问题。
您可以尝试一个快速选项,在虚拟机之间启用网络连接,以便 VBoxGuest1 可以通过 SSH 直接登录到 VBoxGuest2 并发出相应的关机命令。
如果这不起作用,您可以按照我的做法操作。我安装了 VBoxVMService,转到组件服务->计算机->我的电脑->DCOM 配置->VirtualBox 应用程序属性并选择了我的身份。然后我安装了 Bitvise SSH 服务器(不是 Cygwin .. 所以如果您真的想要 Cygwin,我不知道该怎么做)。现在一切都无缝运行。对于您想要做的事情可能有点冗长,但如果其他人也能提供答案,我将不胜感激。
答案2
我遇到了与 André 描述的相同的问题,使用 SSH(从同一主机上的虚拟 CentOS 7)通过 BitVise SSH 服务器进入 Windows 7 Pro。
我可以确认,Hari 描述的解决方案(将组件服务->计算机->我的电脑->DCOM 配置->VirtualBox 应用程序属性中的身份设置为“交互式用户”(最初是“启动用户”))解决了该问题(重新启动后激活更改)。我不需要安装 VBoxVMService。
安迪