RemoteBox
RemoteBox 是一个开源远程客户端,用于管理 VirtualBox,使用 Perl 和 GTK 编写。它允许管理服务器上的 VirtualBox 安装,包括其虚拟机,并像在本地运行一样与之交互。虽然 VirtualBox 安装在服务器端,但 RemoteBox 在客户端机器上运行。它提供了一个完整的 GTK 图形界面,外观和感觉与 VirtualBox 的原生 GUI 非常相似。如果您熟悉其他虚拟化软件,例如 VMWare ESX,那么可以将 RemoteBox 视为“穷人版的 VI 客户端”。
安装
客户端
RemoteBox 是客户端应用程序,可以通过安装 remoteboxAUR 软件包获得。对于远程桌面操作,还需要 RDP 客户端。RemoteBox 包括 freerdp、rdesktop 和 krdc 的预设。截至撰写本文时,freerdp-gitAUR 2.0.0.beta1 已经过测试并发现可以工作。或者,VNC 可以与 TigerVNC、vinagre、krdc 和 realvnc-vnc-viewerAUR 的预设一起使用。
服务器端
VM 主机需要一个可用的 VirtualBox 安装。对于远程桌面操作,需要非免费的 Oracle VM VirtualBox 扩展包 以支持 RDP,或者可以使用开源的 virtualbox-ext-vnc 以支持 VNC。还要考虑为虚拟机安装 guest additions ISO,以便能够安装或更新工具。
VirtualBox 安装包括VirtualBox Web 服务 (vboxwebsrv
),它提供一个 HTTP(S) 服务器,为 RemoteBox 等客户端提供 API。该服务不应该也不允许以root 身份运行。为了提高安全性,应该创建一个额外的用户来运行虚拟机和 Web 服务。用户需要密码(用于远程登录)、主目录(用于 VirtualBox 设置和虚拟机配置)以及 shell(以便 RemoteBox 能够登录)。本页面的其余部分假设用户为 vbox
,主组为 vboxusers
。
提供的服务文件 /usr/lib/systemd/system/vboxweb.service
用作模板,可以使用 drop-in 文件 进行自定义,如下所示
/etc/systemd/system/vboxweb.service.d/override.conf
[Service] User=vbox Group=vboxusers PIDFile=/run/vboxwebsrv/vboxwebsrv.pid ExecStart= ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxwebsrv/vboxwebsrv.pid --background --host 0.0.0.0
可以通过编辑上面覆盖文件中的 ExecStart
行来启用日志记录,以包含 --logfile <日志文件位置>
指令。为了提高详细程度,您还可以包含 --verbose
指令。确保 vbox 用户有权写入配置的日志文件位置。
可以将 --host
指令更改为 localhost 或主机名,以仅在本地绑定服务,或者设置为单个选定接口的 IP。可以使用 --port
设置默认端口 18083 之外的备用端口。
您还需要为 vboxwebsrv
的 PID 文件创建一个 tmpfile 规则
/etc/tmpfiles.d/vboxwebsrv.conf
d /run/vboxwebsrv 0755 vbox vboxusers
要立即测试 vboxweb.service
,您需要首先手动创建 /run/vboxwebsrv
目录
# mkdir /run/vboxwebsrv # chown vbox:vboxusers /run/vboxwebsrv # chmod 755 /run/vboxwebsrv
连接 RemoteBox 到 vboxwebsrv
打开 RemoteBox 并单击连接按钮。指定以下内容
URL: http:<server IP>:18083 Username: vbox Password: <vbox user password>
为了在以后的会话中更容易连接,登录后转到文件 > 连接配置文件并创建一个新的连接配置文件。
故障排除
如果您在连接到服务器时遇到登录问题,请首先检查服务是否正在运行。从服务器控制台,检查 vboxweb.service
单元状态。
它应该输出它正在运行。如果没有,请使用 journalctl 检查日志记录,如果您配置了 --logfile
,请检查 vboxwebsrv
的日志文件以获取任何线索。
即使提高了详细程度,VirtualBox Web 服务也可能不会为您提供任何有用的线索。在这种情况下,您可以尝试使用 su 或 sudo 从命令行手动以 vbox 身份运行服务器。
[vbox]$ /usr/bin/vboxwebsrv --pidfile /run/vboxwebsrv/vboxwebsrv.pid --host 0.0.0.0
省略 --background
和 --logfile
指令。如果服务启动,问题可能是日志文件的权限。让它运行并检查您是否可以从客户端使用 RemoteBox 连接。还要检查 ~/.config/VirtualBox
目录是否已创建并填充了配置和/或日志文件。
如果您仍然无法连接,可以使用 Ctrl-c
停止服务,并使用 --background
指令启动它。接下来,使用 netstat
或类似的命令检查 vboxwebsrv
是否正在端口 18083 上监听。如果您看到不同的端口,您可以尝试在 RemoteBox 上连接到该端口。
另一个原因可能是防火墙,无论是在您的服务器上,还是在您的客户端上。
如果您收到以下错误消息
vboxwebsrv: error: failed to initialize COM! hrc=NS_ERROR_FAILURE
检查您的主目录对于用户 vbox 是否可写。