FreeNX
FreeNX,德语文本,是一个允许您通过互联网从另一台计算机访问您的桌面的系统。该程序是开源的、安全的(基于 SSH)、快速且多功能的。许可证:GPL。它是 NoMachine 的非商业版本,后者现已转换为闭源。一个好的 FreeNX 替代品是 X2Go。
安装
从 nx3-allAUR 或 nomachineAUR 获取 FreeNX/Nomachine。服务器和客户端软件包都包含在该软件包中。sshd 守护程序(在 openssh 软件包中可用)必须安装并运行才能正常工作。
配置
服务器
SSHD
为了使 freenx 身份验证工作,sshd 必须正确设置。您需要允许 RSAauthentication、密码身份验证,并且还需要将 nx 公钥包含到 Authorizedkeysfile 中。
如果您不想全局允许密码登录,请在文件末尾添加如下匹配块:/etc/ssh/sshd_config
RSAAuthentication yes PubkeyAuthentication yes PasswordAuthentication no PermitEmptyPasswords yes AuthorizedKeysFile /usr/NX/home/nx/.ssh/authorized_keys /usr/NX/home/nx/.ssh/authorized_keys2 # # # Match Address 127.0.0.1 PasswordAuthentication yes
主要配置
主配置文件位于 /usr/NX/etc/node.cfg
。
如果您在非默认端口 22 的端口上运行 SSH 守护程序,您将需要取消注释并更新:SSHD_PORT=22
如果您使用 KDE 或 GNOME 桌面环境,则无需编辑此文件,因为带有修改后的 MD5SUM 命令的默认设置在这种情况下应该可以工作。如果您使用另一个窗口管理器,例如 Fluxbox/Openbox 或 Xfce,您可能需要稍微编辑此文件(见下文)。
或者,如果您不使用 CDE 而使用 Xfce,您可以简单地编辑 CDE 行,如下所示,并从客户端启动 cde
CommandStartCDE = "/usr/bin/startxfce4"
要概述安装和卸载过程,请在安装 nx3-allAUR 后运行以下命令
# /usr/NX/scripts/setup/nxserver --help
密钥
默认情况下,密钥用于对客户端进行服务器身份验证。您可以使用安装期间创建的默认密钥,也可以创建新的密钥对。如果您创建自己的密钥对,请确保将公钥目录添加到 sshd_config 中的 authorizedkeyfiles 以及 node.cfg 中的 SSHAuthorizedKeys。并且不要忘记将私钥发送给客户端。
公钥可以在这里找到,请检查
/usr/NX/home/nx/.ssh/authorized_keys2
私钥可以在这里找到
/usr/NX/share/keys/server.id_dsa.key
重新生成随机密钥
/usr/NX/bin/nxserver --keygen
您可以通过以下方式检查 nxserver 是否正在运行
/usr/NX/bin/nxserver --status
您还可以通过以下方式检查是否可以登录所需用户
/usr/NX/bin/nxserver --usercheck USERNAME
启动服务器
从安装开始,nxserver 设置为自动启动,但是,您可能需要在设置后重新启动服务器
/usr/NX/bin/nxserver --restart
客户端
Arch Linux
安装 opennxAUR 和 nx3-allAUR 软件包中的一个或两个。
Windows
从 nomachine 的主页获取客户端:https://www.nomachine.com。
配置
如上所述,客户端必须包含正确的密钥才能连接到服务器。如果您使用的是安装期间生成的自定义密钥,则需要将客户端密钥复制到以下位置
- Windows:
您的 Windows 安装目录/share/keys/client.id_dsa.key
- Arch Linux:
/usr/lib/nx/share/keys/client.id_dsa.key
移动密钥后,您可能需要使用 nxclient GUI 导入新密钥。从配置对话框中,按下“密钥...”按钮并导入新的客户端密钥。
运行
在 Arch Linux 上安装 nxclient 后,可执行文件在 /usr/lib/nx/bin/
中可用,符号链接到 /usr/bin/
。首次运行 /usr/bin/nxclient
时,用户将被引导完成一个向导。
键盘快捷键
键盘快捷键 | 描述 |
---|---|
Ctrl+Alt+f
|
切换全屏模式。 |
Ctrl+Alt+t
|
显示终止、挂起对话框。 |
Ctrl+Alt+m
|
最大化或最小化窗口。 |
Ctrl+Alt+鼠标
|
拖动视口,以便您可以查看桌面的不同部分。 |
Ctrl+Alt+箭头键/小键盘
|
按像素增量移动视口。 |
Ctrl+Alt+s
|
激活“屏幕抓取”模式,以便客户端发起的所有 GetImage 都将转发到真实显示器。 再次按下该序列,nxagent 将恢复到常用的“快速”模式。 |
Ctrl+Alt+e
|
延迟图像编码 |
Ctrl+Alt+Shift+Esc
|
紧急退出并杀死窗口 |
离开全屏
几乎每个全屏模式下的 nx 应用程序的右上角都有一个魔术像素。左键单击像素,应用程序窗口将图标化。
恢复提示
- 恢复有点实验性,会话恢复后可能会出现崩溃。您必须找出哪些应用程序喜欢恢复,哪些不喜欢 ;) 。
- 在 Linux 和 Windows 会话之间恢复不起作用。更新:版本 3.2.0-14 似乎能够恢复 Windows 挂起的会话。
- 如果恢复失败,请让它超时,不要使用取消按钮,否则会话将保持打开状态并消耗服务器上的 RAM。要杀死此类会话,请使用 Session Admin 程序杀死它们。
修复 DPI 设置
如果您希望在所有客户端会话中具有相同的字体大小/dpi 大小,请设置 X 资源 Xft.dpi
。例如,将以下行放入用户的 ~/.Xresources
中会使其“桌面”变为 100dpi。
Xft.dpi: 100
FreeNX 连接到现有显示器
通常,当连接到 NX 服务器时,会创建一个新的 X 会话。有时,连接到现有 X 会话(例如,root 会话)可能很有用。这在默认设置下使用 NX 是不可能的,但可以使用 tightvncAUR 和 x11vnc 来实现。在 NX 服务器系统上安装它们。
x11vnc 将服务于 X 会话,我们必须创建一个文件 $HOME/.x11vncrc
来为 x11vnc 提供一些选项,例如
display :0 shared forever localhost rfbauth /home/user/.x11vnc/passwd
创建 VNC 密码文件
$ mkdir $HOME/.x11vnc $ x11vnc -storepasswd PASSWORD $HOME/.x11vnc/passwd $ chmod 600 $HOME/.x11vnc/passwd
创建一个 shell 脚本,如果 x11vnc 服务未运行,则启动它,并启动软件包 tightvnc 提供的 vncviewer。
$VNC_PORT
定义了 X 显示,该显示配置为 $HOME/.x11vncrc
下的 display :0
,5900
是 root 会话,如果您想使用 display :1
,请使用端口 5901
,依此类推#!/bin/sh VNC_VIEWER=vncviewer VNC_SERVER=x11vnc VNC_RESOLUTION=1024x786 VNC_PASSWD=/home/USER/.x11vnc/passwd VNC_PORT=5900 if [ -z "$(pgrep ${VNC_SERVER})" ]; then echo $VNC_SERVER not running, starting... exec $VNC_SERVER & sleep 5 fi exec $VNC_VIEWER -geometry $VNC_RESOLUTION -passwd $VNC_PASSWD localhost::$VNC_PORT
使用您选择的文本编辑器保存此脚本,例如在 $HOME/shell/nxvnc.sh
下。使其可执行并创建一个符号链接,例如
$ chmod +x $HOME/shell/nxvnc.sh # ln -s /home/USER/shell/nxvnc.sh /usr/local/bin/nxvnc
此时,您可能想要测试当前配置
$ /usr/local/bin/nxvnc
如果 x11vnc 服务和 vncviewer 会话已启动,则您的配置工作良好。您现在可以使用 NX 客户端和以下选项连接到当前的 X 会话
Login, Password, Host, Port: your default entries Desktop: Unix -> Custom - Settings: - Run the following command: /usr/local/bin/nxvnc - New virtual desktop Display: - Fullscreen or Custom with you preferred resolution
您现在可以通过 NX 客户端连接到当前的 X 会话。
设置非 KDE 或 GNOME 桌面管理器
在遵循本节中的任何内容之前,请确保服务器工作设置并接受连接。本节仅处理 NXClient 登录后出现的问题。
连接到 GNOME 和 KDE 会话非常简单(一旦服务器设置好),但是连接到其他窗口管理器(Fluxbox、Xfce 等)则略有不同。
选择“自定义”并使用诸如 startx 或 startfluxbox 之类的命令将导致在 !M 徽标后出现空白屏幕,或者客户端显示错误,抱怨缺少 X 服务器。解决此问题的一种方法是使用命令“startx”打开一个会话,然后使用另一个命令来启动您选择的窗口管理器。
如果您不想这样做,您可以通过安装像 SLIM 或 XDM 这样的登录管理器来启动 X。我建议使用 SLiM,因为它体积小巧。
(作者注:这就是我在我的 arch 安装上让 fluxbox、xfce 和其他窗口管理器工作的方式 - 但是,我现在已经从 inittab 中删除了 slim,并将运行级别设置回 3,但我仍然可以使用 NXClient 完美登录。如果您以这种方式使您的系统工作,可以尝试一下,如果您像我一样有一台低内存机器。)
替代修复方案
一个简单的修复方案,无需求助于上述方法,似乎涉及对配置文件进行简单的编辑。这应该适用于 Fluxbox/Openbox/XFCE 或任何其他使用 .xinitrc
启动文件来调用 startx 的窗口管理器。
只需以 root 身份编辑配置文件 /etc/nxserver/node.conf
并更改
#USER_X_STARTUP_SCRIPT=.Xclients
为
USER_X_STARTUP_SCRIPT=.xinitrc
记住从行首删除 # 符号。
然后在客户端的配置设置下,选择 自定义 作为桌面,然后单击设置
- 在第一组中选择 -
在服务器上运行默认的 X 客户端脚本
- 在第二组中选择 -
新的虚拟桌面
问题
键盘映射问题
键盘布局总是回退到 en_US。
登录后,使用您的布局运行 setxkbmap。
示例
$ setxkbmap -layout br
或创建文件 /usr/share/X11/xkb/keymap.dir
# touch /usr/share/X11/xkb/keymap.dir
创建此文件将修复下次登录的问题。
调试问题
编辑 nxserver 配置文件 /etc/nxserver/node.conf
并更改
#SESSION_LOG_CLEAN=1
为
SESSION_LOG_CLEAN=0
然后您可以在以下位置查看/调试日志文件
$HOME/.nx/T-C-hostname-display-session-id
用于成功连接
$HOME/.nx/F-C-hostname-display-session-id
用于失败的连接。
身份验证通过,但连接失败
如果您正在尝试启动 KDE,请编辑 /etc/nxserver/node.conf
并搜索
COMMAND_START_KDE=startkde
替换为
COMMAND_START_KDE=/usr/bin/startkde
密钥更改
在 GUI 设置中将密钥更改为新生成的密钥。
密码错误 / 无法连接 / 基于密钥的身份验证
- 如果您已更改 ssh 守护程序以在备用端口上运行,请务必修改 /etc/nxserver/node.conf 中的 SSHD_PORT。
- 如果您在身份验证完成后始终收到密码错误或无法连接,并且您确定您输入的密码正确,请检查您的服务器是否可以使用 ssh 通过 localhost 连接到自身。
- 如果您搞砸了您的密钥文件,请创建新的密钥文件或修复旧的密钥文件,这可能是由错误的 known_hosts 文件引起的。
- 如果您收到密码错误或登录错误,请在
/etc/nxserver/node.conf
中放入 ENABLE_PASSDB_AUTHENTICATION="1",并通过以下命令添加用户
# /usr/bin/nxserver --adduser [username] # /usr/bin/nxserver --passwd [username]
- 如果您在 ssh 中禁用了密码身份验证而改用基于密钥的身份验证,则上述命令也是必需的。
NX 在会话启动时崩溃
如果您的 NX 客户端显示 NX 徽标,然后消失并显示连接问题对话框。
NX 徽标后黑屏
如果您看到 NX 徽标 (!M) 然后看到黑屏。
可以通过运行登录管理器来解决此问题 - 问题是 X11 没有启动,并且似乎“startx”或类似命令无法从 freenx 客户端工作。请按照以下说明设置登录管理器并在启动时加载它:显示管理器
盲点:如果这不能解决您的问题,请注意 freenx 和 bash_completion 不能很好地协同工作。我只有在从 .bashrc 中删除 bash_completion 后才能使一切正常工作。
使用非 KDE 或 GNOME 桌面管理器时出现 GDM/XDM 会话菜单错误(在非 Arch Linux 用户中更常见)
问题:出现一个会话菜单,内容是关于“chooseSessionListWidget”。窗口管理器永远不会加载。
仔细检查 .xinitrc 是否可执行,如果不是,请使其可执行
stat -c "%A" ~/.xinitrc
请记住,此命令应与本页上关于设置非 KDE 或 GNOME 桌面管理器的相关说明一起执行。
无法连接,因为找不到命令 sessreg
如果您在连接时遇到以下错误
/usr/bin/nxserver: line 941: sessreg: command not found NX> 280 Exiting on signal: 15
那么您必须安装软件包 xorg-sessreg。
Cairo 1.12.x 恢复中断
最新的 cairo 更新破坏了渲染扩展。恢复会话后,挂起之前的所有字符都不会被渲染。要解决此问题,请将以下单行添加到 /etc/nxserver/node.conf
。
AGENT_EXTRA_OPTIONS_X="-norender"
Eclipse 在编辑文件时崩溃
The program 'Eclipse' received an X Window System error. This probably reflects a bug in the program. The error was 'BadValue (integer parameter out of range for operation)'. (Details: serial 8414 error_code 2 request_code 149 minor_code 26)
使用以下命令启动 eclipse(请参阅 [1])
$ eclipse -vmargs -Dorg.eclipse.swt.internal.gtk.cairoGraphics=false