NoMachine

来自 拱门维基

NoMachine 使您能够通过网络访问计算机的图形桌面。

在 3.x 版本之前,NoMachine 被称为 NX,并在 GPL 下可用。有一些基于核心 NX 库的衍生产品,如 FreeNXX2Go。这些产品的主要缺点是它们使用 nxagent 的内置 X 服务器,该服务器源于 2005 年,并且由于仅在新版本 X 库中可用的不支持功能,某些当前的 X 应用程序无法运行。

与其他一些远程桌面解决方案(例如 TeamViewer)不同,NoMachine 不需要中间服务器来建立连接。

自 NoMachine 版本 4 以来,该软件是专有的,目前有两个版本可用:免费版和企业版。客户端适用于 Linux、MS Windows、macOS、Android 和 iOS。

免费版允许连接到现有的 X 显示(也称为具有物理显示器的实时会话的显示阴影),或者,如果没有 X 显示可用(例如在无头机器上),NoMachine 会尝试使用默认的 桌面环境 自动启动自己的 X 服务器。免费版的主要限制是服务器上只能运行单个远程桌面会话。

安装

安装 nomachineAUR 软件包。

它包括服务器和客户端 tar 包。请注意,安装实际上是通过安装后脚本进行的,因此命令 pacman -Ql nomachine 显示的文件列表并不完整!

特别是,大多数 NoMachine 文件都保存在 /usr/NX 目录中,但还会添加一些其他文件

/etc/NX
/etc/pam.d/nx
/usr/lib/systemd/system/nxserver.service
/usr/local/share/applications/NoMachine*.desktop
/usr/share/polkit-1/actions/org.freedesktop.pkexec.nomachine.policy

由 NoMachine Player 创建的文件存储在

$HOME/.nx
$HOME/Documents/NoMachine

安装后脚本还会创建一个新用户 nx

如果您也安装了 X2Go 或 FreeNX,请不要混淆某些文件使用相似的名称(即 /usr/bin/nx)。

nxserver.service 不需要在使用仅作为客户端的计算机上启用和启动,但它必须在服务器上运行。

用法

在目标计算机上,通过 systemd 启动/启用 nxserver.service,或通过桌面中的菜单:Internet > NoMachine > NoMachine Service,这通过 GUI 完成相同的操作,并提供额外的信息和配置。

在客户端上,启动 "Player"(菜单 Internet > NoMachine > NoMachine。或使用以下命令启动

/usr/NX/bin/nxplayer

它将在局域网中搜索可用的 NoMachine 服务器,或者,如果禁用或在不同的子网/WAN 中,您可以手动键入目标主机名或 IP 地址。登录凭据与目标计算机上用户使用的凭据相同。

故障排除

无头服务器

安装 xorg-xauth 软件包

为了正确的环境设置,需要进行以下更改

/etc/pam.d/nx
auth       include       system-remote-login
account    include       system-remote-login
password   include       system-remote-login
session    include       system-remote-login

更改 /usr/NX/etc/node.cfg 中的 DefaultDesktopCommand,并在您的启动命令前添加以下内容

env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

启动 Xfce 的示例

DefaultDesktopCommand "env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus /usr/bin/startxfce4"

与现有 X 会话并行分离 NoMachine X 会话

在默认设置中,即使远程计算机仅运行 X 显示管理器,NoMachine 免费版也会将客户端直接连接到远程计算机上现有的 X 会话。这可能是不希望的,因为在同一时刻,没有其他用户可以在本地使用目标计算机,并且任何物理访问目标计算机的人都可以在物理显示器上看到远程连接用户正在执行的操作。

但是,可以设置 NoMachine 仅检查特定的 DISPLAY,例如 DISPLAY :10,它将忽略 DISPLAY :0(Arch Linux 中的标准设置)上的现有 X 会话,并为远程连接用户启动新的虚拟会话。

要做到这一点,请编辑 /usr/NX/etc/node.cfg 中的键 PhysicalDisplays

PhysicalDisplays :10

显示管理器中默认键盘的问题

当 NoMachine 连接到目标计算机上的显示管理器,并且用户尝试像坐在目标计算机前一样登录时,由于不同的键盘映射,用户身份验证可能会失败。一种解决方法是在文本编辑器中键入用户密码,并通过剪贴板将其复制到 NoMachine 会话。

一旦用户登录到远程桌面环境,运行 setxkb cz (“cz” 代表捷克键盘,仅为示例)应该可以解决键盘映射问题。

通过 SSH 连接

NoMachine 免费版不允许使用 SSH 协议连接到目标计算机,仅使用 NX 协议(默认情况下监听端口 4000)。

如果不希望在防火墙上打开另一个端口,一种解决方法是在客户端和目标计算机之间创建标准的 SSH 隧道,并通过该隧道连接

例如,在客户端计算机上

$ ssh -L 4000:localhost:4000 user@targetmachine -fN

然后,启动 NoMachine Player 并尝试使用 NX 协议连接到 localhost。连接将被隧道传输到目标机器,并重定向到服务器的 localhost 端口 4000

Virtualbox 虚拟机音频流在重新连接时丢失

如果使用 PulseAudio 音频接口,nxserver 将在客户端断开连接时重启 pulseaudio,virtualbox 虚拟机无法自动连接到新的 pulseaudio,因此音频流丢失。一种解决方法是在您的 nxserver 的 PATH 中提供一个虚拟的 pulseaudio。

$ ln -s /usr/bin/true /some/path/prior/to/usr/bin/pulseaudio
$ which -a pulseaudio
/some/path/prior/to/usr/bin/pulseaudio
/usr/bin/pulseaudio

然后重新安装 nomachineAUR 软件包以重新生成 /usr/NX/etc/node.cfg,并重新检查 pulseaudio 启动命令。

$ grep -i pulse /usr/NX/etc/node.cfg
AudioInterface pulseaudio
CommandStartPulseAudio "/some/path/prior/to/usr/bin/pulseaudio --high-priority=no"

最后 重启 nxserver.service

卸载 nomachine 后 PackageKit 持续在 discover 中请求身份验证

nomachineAUR 卸载程序会留下一个 polkit 规则文件,导致 PackageKit 在每次刷新系统存储库时都提示进行身份验证。要恢复以前的行为,您可以在卸载 NoMachine 后手动删除此文件。

# rm /usr/share/polkit-1/rules.d/55-org.nomachine.rules

卸载 NoMachine 后出现的图形问题(尤其是在 Wayland 中)

请参阅此论坛帖子。NoMachine 通过 /etc/udev/rules.d 和 /etc/X11/xorg.conf.d 中的文件更改了一些权限,但这些文件在卸载 NoMachine 后无法正确删除。这会导致在 X 下出现图形问题,并且在 Wayland 下根本无法正确启动(出现类似 libEGL warning: failed to open /dev/dri/renderD128: Permission denied 的错误)。要解决此问题,请删除以下目录和文件

/etc/opt/VirtualGL
/usr/share/gdm/greeter/autostart/virtualgl.desktop
/etc/modprobe.d/virtualgl.conf
/etc/udev/rules.d/99-virtualgl-dri.rules
/etc/X11/xorg.conf.d/99-virtualgl-dri

还要删除文件 /usr/share/sddm/scripts/Xsetup 中关于 nomachine 的行。


参见