我的 Windows 机器上有一个 Ubuntu 服务器虚拟机,我能够在 Windows 机器上毫无问题地运行 VirtualBox,然后我可以通过 SSH 进入新创建的服务器。但是,我试图通过 SSH 进入我的 Windows 机器(我安装了 SSH 服务器)并通过运行以下命令启动 VirtualBox:
cd C:/Program Files/oracle/virtualbox
virtualbox --vm <virtual machine ID>
我使用的机器 ID 与使用 VirtualBox 机器管理器创建快捷方式时使用的机器 ID 相同。
当我执行此操作时,虚拟机的 GUI 不会出现。检查任务管理器进程选项卡,如果我单击显示所有用户,我只能看到 VirtualBox 进程,但是显示的进程是在与我的帐户相同的用户名下运行的。
尝试与新服务器建立 SSH 连接不起作用。使用 nmap 对我的网络进行 ping 扫描似乎没有显示任何新主机。
我想补充一点,直接在 Windows 命令提示符中使用与上述相同的命令即可启动 VM,没有任何问题。
编辑
我已按照说明进行操作并virtualbox
改为VBoxHeadless --startvm 8b2db 9b3-5907-431f-b25c-44ea9cade05d
通过 ssh 执行此操作会出现错误:
Invalid machine name or UUID!
但是 UUID 与我桌面上的快捷方式中使用的 UUID 相同,只需双击 .bat 文件就可以运行。
我怀疑问题可能是由我的 ssh 服务器在管理环境下运行引起的。我使用的是“bitvise ssh 服务器”
进一步检查发现,在 Windows 命令提示符中,我VBoxMange list vms
既可以以标准用户身份运行,也可以以管理员身份运行。但是在 cygwin 中运行它却没有任何结果,通过 ssh 运行它(无论是在 cygwin 终端还是命令提示符中)也不会返回任何结果。
答案1
那么,如果它对你有用,为什么不把它作为答案呢。(:
使用没有 GUI 的 VirtualBox 的解决方案是VBoxHeadless
。尽管还有更舒适的选择,例如 phpVirtualBox。
VBoxHeadless
与 配合使用,VBoxManage
为 VirtualBox 功能提供完整的接口。要启动虚拟机,需要注册虚拟机。可以使用 列出已注册的虚拟机VBoxManage list vms
。
答案2
检查文件夹:C:\Windows\System32\config\systemprofile.VirtualBox 是否存在。如果此文件夹仅继承日志文件 - 删除整个文件夹或将其移动到新位置
现在从命令行将正确的文件夹链接到此位置(是的,使用 ntfs 就可以做到):
mklink /j C:\Windows\System32\config\systemprofile.VirtualBox C:\Users\Administrator.VirtualBox
(将管理员替换为您运行虚拟机的帐户名)
ssh shell 使用文件夹 C:\Windows\System32\config\systemprofile.VirtualBox 作为其 virtualbox 文件夹,而通常的管理员登录使用 C:\Users\Administrator.VirtualBox。如果您可以通过命令行管理您的 virtualbox 机器,您只需将文件从 C:\Users\Administrator.VirtualBox 移动到 C:\Windows\System32\config\systemprofile.VirtualBox 并忽略上面的链接。