FreeNX trouble shooting

Linux世界的远程桌面方案有:直接设置DISPLAY环境变量、VNC、NX。以NX性能最好。Linux上的NX server有两个选择:商业版(nomachine.com)和free版(http://freenx.berlios.de/)。

NX安装过程参考: http://wiki.centos.org/HowTos/FreeNX, http://blog.csdn.net/shuxiaotu/article/details/5675482, http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ/General。
现象1:我在一台CentOS 5机器上安装了nx server, PC机安装了nx client可以连接上。后来不知为何,认证成功,但是download session information时失败,通常给一个错误号,让你去看/var/log/messages。
分析与解决办法:nx client的错误消息提示查看server端系统日志。server上的/var/log/messages有如下信息:
Oct 19 20:33:03 platbuild NXNODE-3.5.0-3[2251]: ERROR: NX> 596 /usr/bin/xauth: /home/zhichyu/.nx/C-platbuild-1003-85DD9132B32309064906E8090162CE6F/scripts/authority:3:  bad display name "platbuild:1003" in "add" command [e3B8855] Logger::log nxnode 2963
这说明hostname修改不彻底导致"platbuild:1003"不能被识别为有效DISPLAY值。
在/etc/hosts添加如下行即可:
127.0.0.1 platbuild


现象2:使用nx认证失败:
NX> 203 NXSSH running with pid: 3164
NX> 285 Enabling check on switch command
NX> 285 Enabling skip of SSH config files
NX> 285 Setting the preferred NX options
NX> 200 Connected to address: xx.xx.xx.xx on port: 22
NX> 202 Authenticating user: nx
NX> 208 Using auth method: publickey
NX> 204 Authentication failed.


分析与解决办法:
(1) 在NX client GUI上,点击"Key...",删除框内文本,将nx server上的/etc/nxserver/client.id_dsa.key文件内容粘贴在那里,保存。如果这招不灵,还有下面一招。
(2) nx server的认证有多种模式。默认设置时,整个认证过程是两次SSH认证。第一次是用户nx的DSA publickey方式认证;第二次以client GUI上填写的用户名和密码认证。
不想去修改nx server的配置文件。既然两次都是SSH认证,完全可以在SSH服务设置方面动脑筋。
在任意linux机器上以任意身份生成一个DSA密钥对id_dsa和id_dsa.pub。把id_dsa.pub内容追加到~nx/.ssh/authorized_keys。(从/etc/passwd可知~nx为/usr/NX/home/nx。.ssh目录下还有个authorized_keys2可以删除,因为OpenSSH v3以上此文件过时了,统一使用authorized_keys。)从任意linux机器上验证以nx身份和刚才生成的id_dsa看能否登录:
zhichyu@w-shdc-zhichyu:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/zhichyu/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/zhichyu/.ssh/id_dsa.
Your public key has been saved in /home/zhichyu/.ssh/id_dsa.pub.
The key fingerprint is:
11:90:69:11:20:8c:79:d1:eb:d2:72:f2:61:bd:aa:3c zhichyu@w-shdc-zhichyu


zhichyu@w-shdc-zhichyu:~$ $ ssh -i id_dsa -o PreferredAuthentications=publickey [email protected] 
HELLO NXSERVER - Version 3.5.0-4 - LFE
NX> 105 quit
Quit 
NX> 999 Bye.
Connection to 134.64.221.156 closed.


此步骤成功后,在NX client GUI上,点击"Key...",删除框内文本,将id_dsa文件内容粘贴在那里,保存。


现象3:有时候能成功连接,有时候出现下面的错误:
(1) Session restore failed. 
NX> 596 Error: Session restore failed. Reason was: Session: Display failure detected at 'Sun Feb 19 10:50:25 2012'.
(2) Could not yet establish the connection to the remote proxy. Do you want to terminate the current session?
似乎Windows NX client和Linux NX client来回切换连接NX server,或者两个client上设置不一致(如"Disable encryption of all traffic")比较容易遇到此问题。
分析与解决办法:
多个client切换,实际上是同一个session,只是改变了X输出的目的地而已(所以看到的桌面状态完全相同)。出现以上问题时,杀掉这个session:
zhichyu@tyr:~> ps -elf|grep nxagent
0 S zhichyu   1328  1321  4  75   0 - 25322 -      11:13 ?        00:00:00 /usr/lib/NX/nxagent -persistent -D -name NX - zhichyu@tyr:1002 - tyr (GPL Edition) -option /home/zhichyu/.nx/C-tyr-1002-B71017897411DEEE87BB72C4FA4A46D9/options -nolisten tcp :1002
zhichyu@tyr:~> kill -9 1328
再用client连接,将创建新session。


你可能感兴趣的:(FreeNX trouble shooting)