SDB:FreeNX 到现有显示

跳转到:导航搜索
现在众所周知 FreeNX 尚未支持连接到 X 显示器 :0 或其他本机运行的显示器。本文描述了解决此问题的方法。

在 openSUSE 上测试

推荐文章

情况

NX 设计为使用内部 VNC 服务器和客户端,以便能够连接到已经运行的 X 会话,通常是显示器 :0(X 会话从 0 开始计数)。在开源版本 FreeNX 中,此功能仍然无法正常工作。本文描述了如何使用外部 VNC 服务器和客户端来实现相同的功能。

优点

这使您能够拥有 VNC 桌面共享的便利性、SSH 的安全性(NX 使用 SSH 加密)以及 NX 的响应速度和压缩。非常适合低速和高延迟连接。

缺点

一旦您有一个本地 X 会话正在运行,您将无法创建一个新的 FreeNX 会话。但是,如果您有一个系统正在运行,您不需要运行本地显示,那么您就不需要阅读本文。您只需要一个常规的 NX 连接,您可以暂停并重新连接到它。

您想在什么情况下(使用 FreeNX)连接到本地显示?

  • 有人正在实际使用计算机,您使用此解决方案来处理您想从受保护网络外部帮助他的情况。
  • 您使用 GUI 软件,该软件在启动时自动加载,并且需要保持运行。您想不时从远程位置进行检查。

先决条件

您已经能够使用 FreeNX 登录到您的计算机。如果不是,请阅读 FreeNX 服务器。本文描述了 NoMachine 的 NX 客户端的使用,但对于其他客户端软件应该相同。


从这里开始执行的所有操作都在服务器端完成,除非另有说明。

软件

由于我们将使用我们自己的 VNC 软件并通过 NX 连接对其进行隧道传输,因此我们需要安装适当的 VNC 软件。在已经安装的软件之上,您需要打开 FreeNX 连接,您将需要以下软件包

  • tightvnc
  • x11vnc

使用以下命令安装它们:

zypper in tightvnc x11vnc

配置 x11vnc

我们将使用 x11vnc 来提供我们的 VNC 显示。X11vnc 可以接受很多选项。通过命令行或在配置文件中。选项对于两者都是相同的,只有命令行方式需要“-”后缀。例如:-localhost在命令行中与配置文件中的 localhost 相同。

配置文件

X11vnc 自动查找$HOME/.x11vncrc在被调用时。对于我们的配置,创建此文件并键入所需的选项更容易。打开您最喜欢的文本编辑器并键入以下行

display :0
shared
forever
localhost
rfbauth /home/user/.vnc/passwd
  • display :0 设置显示编号。:0 是第一个。
  • shared 启用超过 VNC 会话的可能性,不是真的必要,但可能会派上用场。
  • forever 表示 x11vnc 在您断开连接时保持运行。默认情况下,只允许一个连接,并在之后停止 x11vnc。
  • localhost x11vnc 不监听任何外部接口。绑定地址设置为 127.0.0.1,并且允许的主机是 127.0.0.1。
  • rfbauth /home/user/.vnc/passwduser 替换为您的用户名。这是存储 VNC 密码的路径。rfbauth设置密码类型。

密码文件

现在我们需要创建上述密码文件。密码只是为您提供一些额外的安全性。客户端将使用相同的文件(因为它将在同一系统和作为同一用户运行),因此您不必每次连接时都输入密码。它只是确保没有人可以劫持您的会话。(例如,具有 SSH 连接的其他用户被视为 x11vnc 的本地主机连接)。在 shell 中运行

x11vnc -storepasswd

使用默认提到的位置,就像我们上面设置的一样。两次输入相同的密码,只有前 8 个字符将被使用。因此,输入更长的密码是没有用的。

检查文件权限(默认情况下应该没问题)。

ls -l ~/.vnc

应该给出如下输出

-rw------- 1 user users 8 2010-09-11 16:30 passwd
 ^^
 This should be the only permissions.

如果您在那里看到更多内容,请运行

chmod 600 ~/.vnc/passwd

配置 vncviewer

Vncviewer 与“thightvnc”软件包一起安装。我们需要 vncviewer,因为 NX 客户端无法连接到 x11vnc。此外,直接执行 vncviewer 而不是窗口管理器不起作用。为此,我们可以使用解决方法。我们创建一个 shell 脚本,该脚本执行 vncviewer。我们让 NX 客户端执行此脚本(并且我们告诉 NX 客户端此脚本是一个窗口管理器)以使 VNC 连接正常工作。

打开您最喜欢的文本编辑器并键入

#!/bin/sh
exec vncviewer -passwd /home/user/.vnc/passwd localhost::5900

并将其保存为/home/user/bin/nxvnc。使文件可执行

chmod +x /home/user/bin/nxvnc

Vncviewer 接受密码相同的文件格式,因此我们将其指向与 x11vnc 相同的密码文件/home/user/.vnc/passwd使用-passwd选项。localhost::5900指向 x11vnc 端口号。5900 代表显示器 :0。

Icon-warning.png
警告:您需要在localhost后面需要双冒号。单个冒号将表示显示号,但可能会导致激活 X 转发的 ssh 连接时出现问题。(不知何故,它会尝试连接到显示器 :10,该显示器为此 ssh 连接保留。)

运行

x11vnc

执行命令

x11vnc

x11vnc 加载了前面配置文件中给定的预设置。关闭 shell 后会删除 x11vnc。您可能正在使用 ssh,这肯定不是您想要的。您可以使用 。Screen 是 bash 内部的虚拟 tty/控制台,可以分离但仍然在后台活动。提供 x11vnc 直到您重新附加并杀死 screen 或 x11vnc。

screen x11vnc

这会在 screen 中加载 x11vnc。您可以检查进度。如果一切正常,请按CTRL+A+D分离。如果您想再次重新附加,请发出:(作为同一个用户!)

screen -D -R
您可以配置您最喜欢的窗口或显示管理器来自动加载 x11vnc。

NX 客户端

在此示例中,使用了 NoMachine 的 NX 客户端。它可以从 NoMachine 下载页面 获取。虽然它是免费的,但它不是 免费开源 的。

Nx-vnc1.png
  • 打开NX 连接向导
  • 您将看到欢迎窗口并按下一步


Nx-vnc2.png
  • 为您的连接命名。
  • 填写服务器的地址和端口号。地址可以是 IP 地址或互联网地址


Nx-vnc3.png
  • 将会话类型设置为UnixOther
  • 设置... 按钮。


Nx-vnc4.png
  • 选择运行以下命令选项。
  • 键入/home/user/bin/nxvnc在文本框中。
  • 选择新的虚拟桌面选项
  • 按确定关闭窗口。


Nx-vnc5.png

在下一个屏幕上,您需要选择显示高级配置对话框并单击完成。


Nx-vnc6.png

显示下,选择全屏。这使得生活变得更容易,因为远程桌面不会调整其大小以适应您的窗口。这为您提供了更大的桌面(等于或大于本地桌面)的空间。

  • 确定关闭此窗口。
  • 现在按登录并观看奇迹发生!



参见

相关文章

外部链接