ightvncserver 相同版本不同行为

ightvncserver 相同版本不同行为

我不确定这是否属于 StackOverflow 还是这里,但由于这些程序可以在 Ubuntu 的一个版本上运行,所以我在这里尝试一下。

我们有一个小型 python 应用程序,每天在服务器上启动一次虚拟 X 显示,然后运行多个需要 X 显示的程序。该程序在 Ubuntu 10.04 上运行良好,并且在 12.04 的服务器上继续运行良好。

现在我们正在考虑使用 14.04 启动服务器,尽管所有先决条件都已满足(最新版本的Py虚拟显示 和紧密vnc服务器)。

在 14.04 上这个程序失败了,调试中最大的问题是,我们无法像在 12.04 服务器上那样查看 X 屏幕,因为在 14.04 上它要求输入密码。我预计这是tightvncserver软件中的一些安全更改,但在 12.04 和 14.04 上,这都是版本 1.3.9,尽管 Ubuntu 特定版本有所不同(6.2 与 6.4)。

我在客户端计算机上使用相同的 VNC 客户端连接到两台服务器。

我可以尝试什么来摆脱密码提示并继续查看可能存在哪些(其他)错误?我确信自从服务器启动以来没有设置密码,我无法开始猜测它可能是什么。

答案1

你应该检查Xvnc -version(14.04)是否给你:

Xvnc version TightVNC-1.3.9

如果连接到 pyvirtualdisplay 创建的 vnc 服务器实例,则可能不会提示您输入密码。

原因是 pyvirtualdisplay 通过检查文件是否/usr/bin/Xvnc存在并在指定xnvc后端时调用该可执行文件来检查要安装的ightvncserver。然而,该文件是一个指向所管理替代方案的链接/etc/alternatives/,例如可以指向vnc4server(该服务器需要密码,IIRC,如果您想通过 VNC 共享桌面,则安装该服务器)。

您可以通过运行以下命令来更改替代方案Xvnc

sudo update-alternatives --config Xvnc

并选择该tightvncserver选项。我不确定这对于依赖其他(当前)选择的服务器替代方案的程序是否有安全副作用。

因此,如果可以的话,您应该更改拉入的源pyvirtualdisplay并添加以下行(在调用之前Display()

import pyvirtualdisplay.xvnc
pyvirtualdisplay.xvnc.PROGRAM = "Xtightvnc"

这迫使 pyvirtualdisplay 库使用正确的服务器二进制文件来规避Xvnc所选的替代方案。

相关内容