一、linux桌面系统原理

linux的桌面系统(X Window System,可以直接通过yum groupinstall "X Window System"安装)实现了X protocol。它包括X server和X client。X client包括gnome和kde两套实现方案,两套方案中提供的登录管理程序分别是gdm和kdm。gnome在centos5上可以使用yum groupinstall "GNOME Desktop Environment"进行安装,在centos6上可以使用yum groupinstall "Desktop"进行安装。

二、linux远程桌面原理

1、XDMCP协议。

客户端是X Window System的X server,它通过XDMCP协议连接服务器上的X client,X server会根据指定的远程桌面的显示编号开启tcp监听端口(一般从6000开始),然后X client的登录管理程序连接到客户端的X server提供的端口上,并由X client的登录管理程序(gdm或者kdm)提供登录界面上,登录完成后由X client启动WM(window manager),然后就开始正常的交互了,客户端的X server负责在客户端绘制图形并提供硬件的操作事件,X client负责提供界面操作需求,然后经过网络传输给X server。使用这种方式进行连接X client和X server之间的通信只需要X server往X client的硬件事件和X client往X server的绘图要求,所以通信量还是比较小的。gdm提供的远程登录请求接收协议使用udp,端口默认在177上。udp请求协议通过后,X server便开始在6000+窗口编号的tcp端口上监听了,然后x client便可以连接这个端口,并将请求发送到X server上。

2、VNC

VNC借助XDMCP的原理,在服务器上启动一个X server并负责绘图,然后通过网络传输到VNC的客户端。因为VNC生成的界面只在服务器端,然后传往客户端,所以输出的界面都只是同步的拷贝,一个X server的显示也只能有一个客户端。VNC的实现有tigervnc等。由于VNC的服务端和客户端传输的是已经绘制完的屏幕图像,所以通信量比较大。

3、xrdp

xrdp实现了rdp协议。前端使用统一端口(默认为3389)管理客户端的连接请求,后端借助vnc server或者rdp server进行窗口显示,并把vnc的窗口发往客户端,由于它提供了sesman(session manager),所以连向它的客户端如果没有这个session,那么它将启动vncserver(Xvnc)或者rdp server建立这个显示界面,并发往客户端。

4、freeNX

freeNX使用NX protocol,后端通过VNC、gnome或者xrdp来提供界面,由于NX协议封装了界面显示信息,使通信量大大降低,比直接使用VNC所需要的带宽要小很多。

三、linux的远程桌面配置

1、使用XDMCP协议的配置

(1)服务器端

A、如果是centos5的版本,在使用XDMCP时,只需要使用gdmsetup(系统->管理->登录窗口)进行配置即可,配置的方式是在远程标签里的样式选上“与本地相同”,然后安全标签里分别选上允许本地系统管理员登录、允许远程管理员登录和禁止TCP连接到X服务器。当然也可直接修改gdm的配置文件/etc/gdm/custom.conf,内容改成如下:

[daemon]

RemoteGreeter=/usr/libexec/gdmgreeter

[security]

AllowRemoteRoot=true

[xdmcp]

Enable=true

[greeter]

[chooser]

[debug]

B、如果是centos6的版本,由于找不到gdmsetup程序(centos6取消了gdmsetup,gdm-restart等一系列命令,release_note上可以查到移除了rhn-setup-gnome包),所以不能再通过gdmsetup程序进行修改了,但可以通过改gdm的配置文件进行gdm的管理,也可以通过首选项的远程桌面配置来管理远程连接的配置部分。gdm的配置文件为/etc/gdm/custum.conf,内容改成如下:

[daemon]

[security]

DisallowTcp=false

AllowRemoteRoot=true

[xdmcp]

Enable=true

[greeter]

[chooser]

[debug]

(2)客户端

A、linux客户端可以使用tsclient(yum可以直接安装,tsclient只是一个软件,它的名称叫在终端服务客户端,它装完后在应用程序->internet或者附件里可以找到,它根据使用的协议选择不同的程序,如使用xdmcp协议时,tsclient实际上调用的是Xnest),也可直接使用Xnest进行连接。使用Xnest时需要指定使用哪个窗口进行显示,如Xnest -query serveraddr :2,其中2表示窗口编号,一般操作系统启动之后0和1窗口是已经被使用过了,所以不能指定0和1,当然这个是可以配置的。需要注意的是XDMCP协议不同版本兼容性可能存在问题,经测试高版本的Xnest可以访问低版本的gdm,但低版本的Xnest访问高版本的gdm时老是出段错误,软件上存在bug。当然linux上也可以直接使用X启用X server连接远程桌面,但缺点是需要使用显示界面编号,不能在当前的显示界面里显示,使用X进行连接有三种方法:(a)query方法,例:X -query XDMCPServerAddr :2(b)broadcast方法,例:X -broadcast :2,这种方式将会连接第一个响应支持远程连接的server上。(c)indirect方法,例:X -indirect XDMCPServerAddr :2,这种方式将由服务器返回可以连接的主机列表,然后你可以选择登录。

B、Windows的XDMCP协议客户端可以使用xshell带的X Manager客户端、Xming或MobaXterm

2、使用VNC的配置

(1)服务器端

A、centos5上使用的vnc服务器软件为vnc-server,可以直接使用yum install vnc-server安装

B、centos6上使用的vnc服务器软件为tigervnc-server,也可以直接使用yum install tigervnc-server安装

安装完成后配置过程如下(参考wiki.centos.org/HowTos/VNC-Server):

a、添加vnc用户,直接使用useradd即可。

b、使用添加的用户登录,然后使用vncpasswd修改自己的vnc密码,注意这个密码不是系统密码,只是远程登录时的验证密码。

c、修改配置文件,为每个用户提供显示界面,vncserver配置文件为/etc/sysconfig/vncserver,它里面的配置指定在哪个显示界面上输出,示例配置如下:

VNCSERVER=“3:xiaomao"#表示在编号为3的显示界面上输出,登录用户名为xiaomao

VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp"#表示显示界面的参数。

(2)客户端

A、linux上在centos5上使用的客户端软件为vnc,可以使用yum install vnc进行安装,安装完成后命令名称为vncviewer,应用程序->附件里可以找到,名称为VNC Viewer。

B、linux上在centos6上使用的客户端软件为tigervnc,可以使用yum install tigervnc进行安装,安装完成后命令名称为vncview,应用程序->internet里面可以找到,名称为TigerVNC Viewer。

C、linux上的VNC客户端也可以使用tsclient,选择使用VNC协议即可,tsclient实际调用的仍然是vnc的客户端(tigervnc或者vnc)。

需要说明的是vnc的客户端需要指明vnc的端口,否则将连接不上。端口和用户显示的界面相关,一般是5900+界面编号,如前面示例配置里xiaomao的端口为5903。

3、使用xrdp

(1)服务器端

linux服务器安装xrdp软件,需要下载xrdp包,自己编译安装。下载地址为sourceforge.net/projects/xrdp/files。官网地址为www.xrdp.org。安装完成后的配置过程如下:

A、xrdp的配置文件为/etc/xrdp/xrdp.ini。端口默认为3389。sesman的配置文件为sesman.ini。

B、xrdp的启动需要启动sesman(xrdp-sesman)和xrdp两个进程,一般编写service脚本的时候要把这两个进程都启动。安装时默认的service脚本(源码包的instfiles里的xrdp.sh)有问题,restart会卡住,需要修改脚本,当然也可以手工启动这两个程序。

(2)客户端

A、linux可以使用krdc、rdesktop或者tsclient(实际调用的是rdesktop)进行连接。

B、windows可以直接使用windows的远程桌面进行连接,也可以使用xrdp的客户端(rdesktop)进行连接。

4、使用freeNX

(1)服务器端

A、linux可以直接通过yum安装freenx(yum install nx freenx)。

B、编辑配置文件/etc/nxserver/node.conf,打开ENABLE_PASSDB_AUTHENTICATION="1"选项(去掉前面的#号就行)。

C、添加nxserver系统用户(直接使用useradd即可),完成后添加到nxserver用户列表中去(nxserver --adduser username)。

D、设置用户密码(nxserver --passwd username)。

(2)客户端

A、客户端软件需要在freeNX的官方网站下载安装包进行安装,过程比较简单,linux下是rpm包,windows下面是exe。

B、安装完成后可以使用连接向导建立连接,linux下在应用程序->Internet->NX Client for Linux下面。需要注意的是在选择连接类型的时候我们需要根据服务器提供服务的类型进行选择,如我们可以选择GNOME、VNC(需要server端提供了vnc服务,并且已知vnc提供的界面显示编号)以及rdp(需要服务端提供了xrdp的服务)等都可以。然后在finish时选上“显示高级配置对话框”的复选框,然后在key里面贴上nxserver验证使用的key(使用所选用户登ssh录服务器后,文件/etc/nxserver/client.id.dsa.key里面的内容)。经过试验,如果登录的server是centos6,并且使用默认设置的话,需要选择xdm而不是gnome才可以登录。

四、windows的远程桌面

1、服务器端

直接在windows上配置远程桌面,使用rdp协议

2、windows客户端

系统自带rdp客户端

3、linux客户端

使用krdc的rdp协议或者tsclient客户端

linux查看xfreedrdp指令,windows和linux的远程桌面相关推荐

  1. linux查看域名解析地址,windows、linux查看域名解析、跟踪路由

    前言 在介绍域名解析命令前,须要首先理解域名的解析过程,理解解析过程后,能更深入的理解nslookup.dig命令.linux 域名解析 为何要有域名? 假如没有域名,那么访问一个网址,好比百度,须要 ...

  2. mstsc连接linux服务器,使用windows自带的远程桌面mstsc连接Centos 7.x远程桌面

    本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法. 一.前言 我希望用windows远程访问centos图形界面.xmanager连接centos远程桌 ...

  3. ①Windows Server 8基于远程桌面服务方案的安装

    今天呢,我正式开始给大家介绍一同分享Windows Server 8的远程桌面服务有什么新的变化和内容了,虽然目前是Beta版,但我觉得大的方向和内容应该变化不到哪去了,同时Windows Serve ...

  4. Windows Server 2008设置远程桌面连接数

    在工作中,我们经常会用到windows server 2008操作系统,需要使用管理员帐号远程登录服务器.一般情况下,windows server 2008默认只允许一个连接,一个帐号最大两个连接数. ...

  5. Windows内网穿透远程桌面:公网远程桌面控制内网电脑 2/3

    系列文章 Windows内网穿透远程桌面:启用Windows远程桌面 1/3 Windows内网穿透远程桌面:公网远程桌面控制内网电脑 2/3 Windows内网穿透远程桌面:配置固定的远程桌面公网T ...

  6. 为什么我的Windows 10家庭版具有远程桌面和BitLocker?

    It is no secret that the Home Editions of Windows systems have had certain features trimmed out or m ...

  7. windows server 2008设置远程桌面连接最大数量

    windows server 2008设置远程桌面连接最大数量 系统默认远程桌面连接的数量为1 打开控制面板---管理工具---远程桌面服务---远程桌面会话主机设置---把"限制每个用户只 ...

  8. 启用Windows Server 2012的远程桌面

    前言 Windows Server 2012 在Windows Server 2012 中远程桌面连接默认是禁用的. 启用Windows Server 2012的远程桌面 打开服务器管理器 点击远程桌 ...

  9. 在WINDOWS SERVER 上或远程桌面中使用 MUTEX

    引用: http://www.cnblogs.com/fg0711/archive/2012/05/03/2480502.html 使用Mutex需要注意的两个细节 可能你已经注意到了,例子中在给Mu ...

  10. Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)

    Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop) TechNet Blogs » 喻勇(Frank Yu)的技术博客 » Windows 7中的 ...

最新文章

  1. C++从零实现神经网络(收藏版:两万字长文)
  2. 安卓蓝牙调试软件和微信小程序搜索不到设备
  3. dueling dqn 和 double dqn_强化学习(十一)--DQN三个经典的变种
  4. 关于软件项目工作量估算的若干问题
  5. (原)torch中微调某层参数
  6. kubernetes一步一步搭建与https访问
  7. codeforces1485 F. Copy or Prefix Sum(dp)
  8. python线性回归x可以数量不一样吗_R和Python中的线性回归 - 在同一问题上的结果不同...
  9. Rest Framework:二、序列化组件
  10. apache+nginx 实现动静分离
  11. PADS导出gerber文件
  12. mysql mpm_mysql监控工具:zabbix+MPM(Performance Monitor for MySQL)
  13. 在使用缓冲流时,遇到Stream closed异常提醒
  14. 移动应用专项测试的思路和方法
  15. 基于51单片机的数字时钟(万年历)
  16. 转载 | 身份访问与管理(IAM)的定义、应用与提供商
  17. 软件测试真的也干不到35岁吗?我还处在水深火热的测试岗...
  18. UEFI模式安装Windows Linux双系统
  19. DOCKER BUILD失败:ERROR CHECKING CONTEST: NOT FOUND OR EXCLUDED BY .DOCKERIGNORE.
  20. 信息学奥赛一本通1184 明明的随机数

热门文章

  1. HTML5分级标题,HTML5与CSS3基础教程:创建分级标题_html/css_WEB-ITnose
  2. 公司网站无意使用了”方正字体”,被”索赔
  3. FFmpeg进阶:给视频添加文字水印
  4. IcedTea6 1.9已通过HotSpot 17更新为OpenJDK6 b20
  5. win7安装nvme固态硬盘win10专业版
  6. 【人工智能】重磅发布人工智能与机器学习全景式概览
  7. 聊一聊我常用的6种绘制地图的方法
  8. 三分钟,带你了解PLM
  9. Oracle如何导出存储过程
  10. 速学Sql Server从基础到进阶