先夸奖一下NX吧:NoMachine NX 是一个快速终端服务和桌面虚拟化系统,由于它对X11的流进行了压缩,所以远程桌面的时候它能提供快速的访问,减少延迟;而做为虚拟化系统,它可以提供真正的图形化多用户环境,比如你登录远程服务器,它会全新给你打开一个桌面,而不是直接登录已经打开了的桌面。当然,如果你想直接登录已经打开的桌面也是可以的。另一个就是它是多协议支持 VNC,及windows的RDP。
再认识一下什么是NX吧:
199x年,满怀梦想的Keith Packard,当时工作于SuSE,是XFree86的核心开发成员,一心想要开发一个在低带宽下依然性能完好的传输协议(LBX - Low Bandwidth X)。他为了LBX倾注心血,将LBX视为自己的孩子,然而最后他还是失败了,LBX最终并没有得到广泛应用。原因是LBX的性能还不够好。于是,他在2001年写一篇LBX的验尸报告 - An LBX Postmortem,以告慰后人,想要实现这样一个高性能的协议是多么的不可能。
2001年3月,XFree86的邮件组里横空出现了一篇题为About our effort at NoMachine的文章,作者是Gian Filippo Pinzari。文章隆重的介绍了经过作者三年研究,在低带宽下依然工作良好的,兼容RDP,VNC等协议的NX协议。Gian将NX的核心组件基于GPL开源出来,他说,“它就在这,大家都来用吧!”。
Gian的公司NoMachine开发的NX Client、Server等都是收费的产品。但是NX核心组件是开源的,于是出现了大量的开源的NX Client和NX Server。比如,NX Client就有OpenNX,QtNX,NX Server又有FreeNX,NeatX等等。
NoMachine的NX是如何做到的呢?NoMachine的秘密,主要有三个:
1. 在X协议的基础上,使用优化的压缩算法,进行压缩传输。压缩比达到10:1,甚至100:1。
2. 在客户端和服务端使用了缓存机制(Cache),避免同样的数据进行不必要的重复传输。
3. 减少客户端与服务端请求、回应的时间。
NX使用
NoMachien的NX面向C/S的,所以它分为两部分:NX Client和NX Server。NX Server是安装在服务器端,来开启服务器端的Nx功能。的部署见文档,还不算复杂。部署完成后,就可以使用NX Client进行连接了。NX Client有Windows版本,Linux版本,Mac版本和Solaris版本。
以上引自:http://www.cnblogs.com/coderzh/archive/2010/10/07/thinclient-secret-of-nomachine.html
下面就来说一下安装吧:
1. 因为Nx通过SSH隧道通信,所以先要确保你的系统安装了openssh
如果没有安装,在Ubuntu中,默认是安装了ssh-client的,那就:
2.在服务器端安装:nxclient nxnode nxserver
到网站:http://www.nomachine.com/download-package.php?Prod_Id=2520
下载 NX Free Edition for Linux 中的三个软件 nxclient nxnode nxserver
为什么安装服务器,要下载三个呢?网站是这么说明的:The client is needed because it ships libraries used by the node. The node is needed because it ships tools needed by the server
所以呢,这三个软件是要按顺序安装的,先安装 Client->node->nxserver
安装nxclient:
终端会有提示:
所以执行一下:
再依次安装nxnode,nxserver:
安装结束
OK,检查一下安装是否成功:
如果输出是下面的就表示成功了:
如果不成功,那就到新立得找到这个三个软件,把它们彻底卸载,再按照上面重新安装。
下面的一些命令也许你会用到:
/usr/NX/bin/nxserver --help
--useradd
--userdel
--passwd
--userlist
--start
--stop
--status
--restart
sudo /usr/NX/scripts/setup/nxserver --keygen 生成密钥
到现在为止,服务器端已经安装成功,不需要设置其它的,就已经可以用了。如果你想再有针对性的进行设置,可以看看这个配置文件,相关的文件是:
如果你要修改与通信端口与认证方式的设置,还要修改ssh的相关配置,而SSH的配置文件是:
关于进一步的设置,稍后说一下。
服务器端的配置说明:
如果你出于安全的考虑,想修改SSH的默认端口,比如修改成5678,那要修改以下文件:
/etc/ssh/sshd_config 中的
改成
/usr/NX/etc/node.cfg中的
/usr/NX/etc/server.cfg中的
改成
修改完配置之后要重启服务人员,重启SSH和Nxserver
另注:
对于服务器做下面一引动配置可令系统更加安全
/usr/NX/etc/server.cfg中的的
两项分别修改成下面的样子:
其中 EnableAutokillSessions = "1" --意思就是允许自动结束会话
比如已经到达系统所能达到最大的会话数,它就会自动Kill旧的而给新的Session资源来建立。
EnableUnencryptedSession = "1" --意思就是加密会话连接,如果不启用的话,那通话的安全性就取决于客户端了,客户端想加密就加密,不想加密的话也是可以的。那它就会允许不加密的会话。
下面说一下
客户端的安装配置:
根据你的客户端系统安装相应的版本。http://www.nomachine.com/download.php,这个就不用说的太多了。如果你的系统仍是Ubuntu,直接用上面已经下载的nxclient就可以了。
安装完成后,会在Application-》Internet看到该软件的菜单,然后打开NX Connection Wizard,
如下图:
点击下一步:如图
在上图中的:
Session:即是你想给这个连接命的名字,这个随你的意,只要方便记忆,方便识别你的这个连接是跟谁连接即可;
Host:这里就是你的服务器端的IP地址,或者是域名都可以;
Port:SSH的端口,默认的SSH端口是22,所以这里要填22,如果你为了安全,修改了端口号,记得这里也要改成相应的端口号哦。
再点击下一步:这一步没有什么好说的,选择 生成桌面图标即可,这样子,下次直接点击就能快速连接了。
现在直接点击桌面上已经生成的图标,如下图:
![screenshot7.png](http://forum.ubuntu.org.cn/download/file.php?id=128729&sid=56a652b0fce5afb0d4112debd7588214)
screenshot7.png [ 18.2 KiB | 被浏览 2642 次 ]
选择Configure进行一些其它的配置。
在上图中Desktop需要说一下:
点击Desktop可以看到:Unix,Windows,VNC,和Shadow。下面一一解释:
Unix:如果你的服务器端是Linux,那就要选择这个了,一旦选择这个,那你连接成功之后就会全新的打开一个桌面,就借刚开机的样子一样。如果你想帮朋友解决他正遇到的问题,那不能选择这个,选择Shadow;
Windows:如果你想连接的是Windows XP 等,那就要用这个,对了,它是只支持RDP协议的,到现在我都没实验成功过,如果有成功用NX连接上WINdows的,请告知一下。
VNC:就是支持VNC协议,具体没有试过。
Shadow:也就是影子的意思,我的理解就是直接克隆你的桌面,而不是新建一个独立的桌面。论坛里有人提问过这个问题,就说为什么能过客户端进去之后不能看到原来打开的程序,好像开机的样子,就是因为没有选择这个选项的原因。
而下一个选择框里有:GNOME,KDE,CDE,XDM,根据你自己的桌面选择相应的即可,还要说一下的是CUSTOM,这个很有意思,你选择它之后,可以再进一步点击后面的 Setting ,如下:你可以选择Run the following command,再填进去一个命令,这个时候,你就不会打开整个桌面了,而只是打开了你与命令关联的程序。比如我输入的是stardict,那就打开了这个程序,轻松实现了软件共享。很爽!
![screenshot9.png](http://forum.ubuntu.org.cn/download/file.php?id=128734&sid=56a652b0fce5afb0d4112debd7588214)
screenshot9.png [ 23 KiB | 被浏览 2640 次 ]
其它的设置就不是太重要了,一般用不上。如果你有特殊需要,可以看看,说不定会实现你的梦想呢!
在上面完成对客户端的设置之后,你就可以直接点击桌面的图标输入用户名和密码了。
这里默认你Linux系统的用户名和密码就是可以的。 你可以试试。如果你想增加其它用户也是可以的。下面会讲到。
如果系统默认的密码认证方式还不能够令你放心,或者你用的SSH本就是关闭了密码认证,只开启了公钥、私钥认证,那下面的内容你就要看一下了。
如果你在/etc/ssh/sshd_config里这样子设置,
禁用了密码认证,也就是只能通过Key的方式认证,因为NX是通过ssh认证的,所以NX的配置也要做一些修改。
1. /usr/NX/etc/server.cfg文件里把下面三项设置成这个样子:
2.因为已经禁用了默认的系统密码认证,那这个时候系统默认的帐号是不能用,所以要生成新的用户。
上面的命令是添加新用户test,这里的用户可以是你系统里已经有的,也可以是系统里没有的。执行这个命令的时候会提示你输入密码,密码可以与你系统原有帐号的密码一样,也可以不一样。
3.因为已经禁用了密码认证了,那就要用NX自带的Key认证了。
在服务器端执行
会在目录/usr/NX/share/keys/下面生成default.id_dsa.key这个文件,下面你要做的就是把这个文件的内容复制到客户端里的Configure——》General——》Key里面即可。这个时候你就可以用你刚刚生成的用户,和这个key来登录了,即使别人有你的你用户名和密码,如果他没有这个key文件,他也也是不能登录你的系统的。
另外:
如果你已经SSH登录设置了用户限制,即在 /etc/ssh/sshd_config文件里有下面这一项
那就要把nx加入到这一行里最后,即允许NX 通过ssh,因为NX是通过SSH隧道,使用nx这一用户认证的嘛。所以最后把这行改成这样子就行了:
NX 常用快捷键:
Ctrl + Alt + T 终止会话
Ctrl + Alt + F 全屏切换
Ctrl + Alt + M 最小化 NX 窗口
参考:http://www.benmccann.com/dev-blog/2011/02/
http://www.cnblogs.com/coderzh/archive/2010/10/07/thinclient-secret-of-nomachine.html
http://www.nomachine.com/ar/view.php?ar_id=AR01C00126
再认识一下什么是NX吧:
199x年,满怀梦想的Keith Packard,当时工作于SuSE,是XFree86的核心开发成员,一心想要开发一个在低带宽下依然性能完好的传输协议(LBX - Low Bandwidth X)。他为了LBX倾注心血,将LBX视为自己的孩子,然而最后他还是失败了,LBX最终并没有得到广泛应用。原因是LBX的性能还不够好。于是,他在2001年写一篇LBX的验尸报告 - An LBX Postmortem,以告慰后人,想要实现这样一个高性能的协议是多么的不可能。
2001年3月,XFree86的邮件组里横空出现了一篇题为About our effort at NoMachine的文章,作者是Gian Filippo Pinzari。文章隆重的介绍了经过作者三年研究,在低带宽下依然工作良好的,兼容RDP,VNC等协议的NX协议。Gian将NX的核心组件基于GPL开源出来,他说,“它就在这,大家都来用吧!”。
Gian的公司NoMachine开发的NX Client、Server等都是收费的产品。但是NX核心组件是开源的,于是出现了大量的开源的NX Client和NX Server。比如,NX Client就有OpenNX,QtNX,NX Server又有FreeNX,NeatX等等。
NoMachine的NX是如何做到的呢?NoMachine的秘密,主要有三个:
1. 在X协议的基础上,使用优化的压缩算法,进行压缩传输。压缩比达到10:1,甚至100:1。
2. 在客户端和服务端使用了缓存机制(Cache),避免同样的数据进行不必要的重复传输。
3. 减少客户端与服务端请求、回应的时间。
NX使用
NoMachien的NX面向C/S的,所以它分为两部分:NX Client和NX Server。NX Server是安装在服务器端,来开启服务器端的Nx功能。的部署见文档,还不算复杂。部署完成后,就可以使用NX Client进行连接了。NX Client有Windows版本,Linux版本,Mac版本和Solaris版本。
以上引自:http://www.cnblogs.com/coderzh/archive/2010/10/07/thinclient-secret-of-nomachine.html
下面就来说一下安装吧:
1. 因为Nx通过SSH隧道通信,所以先要确保你的系统安装了openssh
如果没有安装,在Ubuntu中,默认是安装了ssh-client的,那就:
引用:
sudo apt-get install openssh-server
2.在服务器端安装:nxclient nxnode nxserver
到网站:http://www.nomachine.com/download-package.php?Prod_Id=2520
下载 NX Free Edition for Linux 中的三个软件 nxclient nxnode nxserver
为什么安装服务器,要下载三个呢?网站是这么说明的:The client is needed because it ships libraries used by the node. The node is needed because it ships tools needed by the server
所以呢,这三个软件是要按顺序安装的,先安装 Client->node->nxserver
安装nxclient:
引用:
sudo dpkg -i nxclient_3.4.0-7_i386.deb
终端会有提示:
引用:
Selecting previously deselected package nxclient.
(Reading database ... 324917 files and directories currently installed.)
Unpacking nxclient (from nxclient_3.4.0-7_i386.deb) ...
Setting up nxclient (3.4.0-7) ...
Showing file: /usr/NX/share/documents/client/cups-info
CUPS Printing Backend
The NX Client set-up procedure detected that your "IPP CUPS" printing
backend doesn't allow printing from the NX session. In order to have
printing support in your NX system, you need to set proper permissions
on the IPP backend. Please execute:
chmod 755 /usr/lib/cups/backend/ipp
(Reading database ... 324917 files and directories currently installed.)
Unpacking nxclient (from nxclient_3.4.0-7_i386.deb) ...
Setting up nxclient (3.4.0-7) ...
Showing file: /usr/NX/share/documents/client/cups-info
CUPS Printing Backend
The NX Client set-up procedure detected that your "IPP CUPS" printing
backend doesn't allow printing from the NX session. In order to have
printing support in your NX system, you need to set proper permissions
on the IPP backend. Please execute:
chmod 755 /usr/lib/cups/backend/ipp
所以执行一下:
引用:
sudo chmod 755 /usr/lib/cups/backend/ipp
再依次安装nxnode,nxserver:
引用:
sudo dpkg -i nxnode_3.4.0-16_i386.deb
sudo dpkg -i nxserver_3.4.0-17_i386.deb
sudo dpkg -i nxserver_3.4.0-17_i386.deb
安装结束
OK,检查一下安装是否成功:
引用:
sudo /usr/NX/bin/nxserver --status
如果输出是下面的就表示成功了:
引用:
NX> 900 Connecting to server ...
NX> 110 NX Server is running.
NX> 999 Bye.
NX> 110 NX Server is running.
NX> 999 Bye.
如果不成功,那就到新立得找到这个三个软件,把它们彻底卸载,再按照上面重新安装。
下面的一些命令也许你会用到:
/usr/NX/bin/nxserver --help
--useradd
--userdel
--passwd
--userlist
--start
--stop
--status
--restart
sudo /usr/NX/scripts/setup/nxserver --keygen 生成密钥
到现在为止,服务器端已经安装成功,不需要设置其它的,就已经可以用了。如果你想再有针对性的进行设置,可以看看这个配置文件,相关的文件是:
引用:
/usr/NX/etc/node.cfg
/usr/NX/etc/server.cfg
/usr/NX/etc/server.cfg
如果你要修改与通信端口与认证方式的设置,还要修改ssh的相关配置,而SSH的配置文件是:
引用:
/etc/ssh/sshd_config
关于进一步的设置,稍后说一下。
服务器端的配置说明:
如果你出于安全的考虑,想修改SSH的默认端口,比如修改成5678,那要修改以下文件:
/etc/ssh/sshd_config 中的
代码:
Port 22
改成
代码:
Port 5678
/usr/NX/etc/node.cfg中的
引用:
#SSHDPort = "22"
改成(去年注释号“#“)引用:
SSHDPort = "5678"
/usr/NX/etc/server.cfg中的
引用:
#SSHDPort = "22"
#SSHDAuthPort = "22"
#SSHDAuthPort = "22"
改成
引用:
SSHDPort = "5678"
SSHDAuthPort = "5678"
SSHDAuthPort = "5678"
修改完配置之后要重启服务人员,重启SSH和Nxserver
引用:
sudo /etc/init.d/ssh restart
sudo /etc/init.d/nxserver restart
sudo /etc/init.d/nxserver restart
另注:
对于服务器做下面一引动配置可令系统更加安全
/usr/NX/etc/server.cfg中的的
引用:
EnableAutokillSessions
EnableUnencryptedSession
EnableUnencryptedSession
两项分别修改成下面的样子:
引用:
EnableAutokillSessions = "1"
EnableUnencryptedSession = "1"
EnableUnencryptedSession = "1"
其中 EnableAutokillSessions = "1" --意思就是允许自动结束会话
比如已经到达系统所能达到最大的会话数,它就会自动Kill旧的而给新的Session资源来建立。
EnableUnencryptedSession = "1" --意思就是加密会话连接,如果不启用的话,那通话的安全性就取决于客户端了,客户端想加密就加密,不想加密的话也是可以的。那它就会允许不加密的会话。
下面说一下
客户端的安装配置:
根据你的客户端系统安装相应的版本。http://www.nomachine.com/download.php,这个就不用说的太多了。如果你的系统仍是Ubuntu,直接用上面已经下载的nxclient就可以了。
安装完成后,会在Application-》Internet看到该软件的菜单,然后打开NX Connection Wizard,
如下图:
附件:
点击下一步:如图
附件:
在上图中的:
Session:即是你想给这个连接命的名字,这个随你的意,只要方便记忆,方便识别你的这个连接是跟谁连接即可;
Host:这里就是你的服务器端的IP地址,或者是域名都可以;
Port:SSH的端口,默认的SSH端口是22,所以这里要填22,如果你为了安全,修改了端口号,记得这里也要改成相应的端口号哦。
再点击下一步:这一步没有什么好说的,选择 生成桌面图标即可,这样子,下次直接点击就能快速连接了。
附件:
现在直接点击桌面上已经生成的图标,如下图:
附件:
screenshot7.png [ 18.2 KiB | 被浏览 2642 次 ]
选择Configure进行一些其它的配置。
附件:
在上图中Desktop需要说一下:
点击Desktop可以看到:Unix,Windows,VNC,和Shadow。下面一一解释:
Unix:如果你的服务器端是Linux,那就要选择这个了,一旦选择这个,那你连接成功之后就会全新的打开一个桌面,就借刚开机的样子一样。如果你想帮朋友解决他正遇到的问题,那不能选择这个,选择Shadow;
Windows:如果你想连接的是Windows XP 等,那就要用这个,对了,它是只支持RDP协议的,到现在我都没实验成功过,如果有成功用NX连接上WINdows的,请告知一下。
![:em06 :em06](http://forum.ubuntu.org.cn/images/smilies/em06.gif)
VNC:就是支持VNC协议,具体没有试过。
Shadow:也就是影子的意思,我的理解就是直接克隆你的桌面,而不是新建一个独立的桌面。论坛里有人提问过这个问题,就说为什么能过客户端进去之后不能看到原来打开的程序,好像开机的样子,就是因为没有选择这个选项的原因。
而下一个选择框里有:GNOME,KDE,CDE,XDM,根据你自己的桌面选择相应的即可,还要说一下的是CUSTOM,这个很有意思,你选择它之后,可以再进一步点击后面的 Setting ,如下:你可以选择Run the following command,再填进去一个命令,这个时候,你就不会打开整个桌面了,而只是打开了你与命令关联的程序。比如我输入的是stardict,那就打开了这个程序,轻松实现了软件共享。很爽!
![:em11 :em11](http://forum.ubuntu.org.cn/images/smilies/em11.gif)
附件:
screenshot9.png [ 23 KiB | 被浏览 2640 次 ]
其它的设置就不是太重要了,一般用不上。如果你有特殊需要,可以看看,说不定会实现你的梦想呢!
在上面完成对客户端的设置之后,你就可以直接点击桌面的图标输入用户名和密码了。
这里默认你Linux系统的用户名和密码就是可以的。 你可以试试。如果你想增加其它用户也是可以的。下面会讲到。
如果系统默认的密码认证方式还不能够令你放心,或者你用的SSH本就是关闭了密码认证,只开启了公钥、私钥认证,那下面的内容你就要看一下了。
如果你在/etc/ssh/sshd_config里这样子设置,
引用:
PasswordAuthentication no
禁用了密码认证,也就是只能通过Key的方式认证,因为NX是通过ssh认证的,所以NX的配置也要做一些修改。
1. /usr/NX/etc/server.cfg文件里把下面三项设置成这个样子:
引用:
EnableUserDB = "1"
EnablePasswordDB = "1“
EnableUnencryptedSession = "0"
EnablePasswordDB = "1“
EnableUnencryptedSession = "0"
2.因为已经禁用了默认的系统密码认证,那这个时候系统默认的帐号是不能用,所以要生成新的用户。
代码:
sudo /usr/NX/bin/nxserver --useradd test
上面的命令是添加新用户test,这里的用户可以是你系统里已经有的,也可以是系统里没有的。执行这个命令的时候会提示你输入密码,密码可以与你系统原有帐号的密码一样,也可以不一样。
引用:
NX> 900 Setting password for user: test.
NX> 102 Password:
NX> 102 Confirm password:
NX> 110 Password for user: test added to the NX password DB.
NX> 900 Adding public key for user: test to the authorized keys file.
NX> 716 Public key is already present in: /home/test/.ssh/authorized_keys2.
NX> 900 Verifying public key authentication for NX user: test.
NX> 900 Public key authentication succeeded.
NX> 301 User: test enabled in the NX user DB.
NX> 999 Bye.
NX> 102 Password:
NX> 102 Confirm password:
NX> 110 Password for user: test added to the NX password DB.
NX> 900 Adding public key for user: test to the authorized keys file.
NX> 716 Public key is already present in: /home/test/.ssh/authorized_keys2.
NX> 900 Verifying public key authentication for NX user: test.
NX> 900 Public key authentication succeeded.
NX> 301 User: test enabled in the NX user DB.
NX> 999 Bye.
3.因为已经禁用了密码认证了,那就要用NX自带的Key认证了。
在服务器端执行
引用:
sudo /usr/NX/bin/nxserver --keygen
会在目录/usr/NX/share/keys/下面生成default.id_dsa.key这个文件,下面你要做的就是把这个文件的内容复制到客户端里的Configure——》General——》Key里面即可。这个时候你就可以用你刚刚生成的用户,和这个key来登录了,即使别人有你的你用户名和密码,如果他没有这个key文件,他也也是不能登录你的系统的。
另外:
如果你已经SSH登录设置了用户限制,即在 /etc/ssh/sshd_config文件里有下面这一项
引用:
AllowUsers your_user_control_list
那就要把nx加入到这一行里最后,即允许NX 通过ssh,因为NX是通过SSH隧道,使用nx这一用户认证的嘛。所以最后把这行改成这样子就行了:
引用:
AllowUsers your_user_control_list nx
NX 常用快捷键:
Ctrl + Alt + T 终止会话
Ctrl + Alt + F 全屏切换
Ctrl + Alt + M 最小化 NX 窗口
参考:http://www.benmccann.com/dev-blog/2011/02/
http://www.cnblogs.com/coderzh/archive/2010/10/07/thinclient-secret-of-nomachine.html
http://www.nomachine.com/ar/view.php?ar_id=AR01C00126