背景知识介绍:
1、什么是Xmanager?
Xmanager,可以将PC变成XWindow工作站,它是一个简单的易用的高性能的运行在windows平台上的Xserver,而linux平台下的gnome和kde就是Xclient,linux下的Xserver为xong。XDMCP协议是由DM程序所提供的。X11提供的displaymanager为XDM,而著名的KDE与GNOME也都有自己的displaymanager管理程序,分别是KDM与GDM,可以通过三者中的任何一个displaymanager配置文件来启动XDMCP这个协议程序。在操作XDMCP之前必须要先安装图形接口才可以。
2、linux下的XWindowSystem
linux使用的图形接口就是所谓的XWindowSystem,它是能够跨平台的,目前在linux上面开发的图形接口软件几乎都是使用这个架构来处理的。XWindowSystem在运行的过程中,又因控制的数据不同而分为Xserver和Xclient两种程序,虽然说是Xserver/client,但是它的作用却与网络主机的server/client架构截然不同。
Xserver:这组程序主要负责的是屏幕画面的绘制与显示。Xserver可以接收来自Xclient的数据,将这些数据绘制呈现为屏幕上的图像。此外,我们移动鼠标、单机数据、由键盘输入数据等,也会通过Xserver来传达到Xclient端,而由Xclient来加以运算出应绘制的数据。
Xclient:这组程序主要负责的是数据的运算。Xclient在接收到Xserver传来的数据后(如鼠标的移动、单击等操作)会经由本身的运算而得到鼠标应该要如何移动、单击的结果应该要出现什么样的数据、键盘输出的结果应该要如何呈现等。然后将这些结果告知给Xserver。让它自行绘制到屏幕上。
3、什么是WM?
WindowManager(WM)是一组控制所有Xclient的管理程序,并同时提供例如任务栏、背景桌面、虚拟桌面、窗口大小、窗口移动与重迭显示等任务。WindowManager主要由一些大型的桌面工具开发而来,常见的有gnome和kde。
4、什么是DM?
DisplayManager(DM)是用于提供用户登录画面,以让用户可以通过图形接口登录。在用户登录后,可通过displaymanager的功能去呼叫其他的windowmanager,让用户在图形接口的登录过程变得简单。由于DM也是启动一个等待输入帐号密码的图形数据,因此DM会主动去唤醒一个Xserver,然后在上面加载等待输入的画面。
5、关于XDMCP协议
XDMCP(xdisplaymanagercontrolprotocol)启动后会在服务器的UDP177开始监听,然后当客户端的Xserver连接到服务器的port177之后,我们的XDMCP就会在客户端的Xserver中放上用户输入帐号、密码的图形接口程序。那么你就能通过这个XDMCP去加载服务器所提供的类似windowmanager相关的Xclient,即能够取得图形接口的远程连接服务器了。
架构图如下:
操作流程:
6、CentOS配置XDMCP实现windows远程桌面linux
6.1查看是否安装桌面环境
[root@localhost ~]# yum grouplist
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Group Process
Loading mirror speeds from cached hostfile
* base:
* extras:
* updates:
Installed Groups:
Base //必须的
Desktop //必须的
Desktop Debugging and Performance Tools
Desktop Platform //必须的
X Window System //必须的
……省略……
6.2通过进程查看判断当前是否开启DM
[root@localhost ~]# pstree|grep dm
|-gdm-binary---gdm-simple-slav-+-Xorg
| |-gdm-session-wor
| |-gdm-simple-gree
[root@localhost ~]#
6.3配置文件的设置
[root@localhost ~]# cat /etc/gdm/custom.conf
# GDM configuration storage
[daemon]
[security]
AllowRemoteRoot=yes //允许root登录
DisallowTCP=false //允许客户端使用TCP的方式连接到XDMCP
[xdmcp]
Enable=true //启动XDMCP
[greeter]
[chooser]
[debug]
[root@localhost ~]#
6.4重启服务
[root@localhost ~]# init 3
[root@localhost ~]# init 5
[root@localhost ~]# runlevel
3 5
[root@localhost ~]# netstat -antulp|grep dm
udp 0 0 0.0.0.0:177 0.0.0.0:* 4487/gdm-binary
[root@localhost ~]#
6.5防火墙设置
[root@localhost ~]# netstat -antulp|grep dm
udp 0 0 0.0.0.0:177 0.0.0.0:* 4487/gdm-binary
[root@localhost ~]# grep 177 /etc/sysconfig/iptables
-A INPUT -p udp --dport 177 -j ACCEPT
[root@localhost ~]# /etc/init.d/iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@localhost ~]#
6.6关闭windows端的防火墙
6.7测试登录界面
7、SUSElinux配置XDMCP实现windows远程桌面linux
7.1SUSElinux的版本查看
linux-08wz:~ # lsb_release -a
LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE Linux Enterprise Server 11 (x86_64)
Release: 11
Codename: n/a
linux-08wz:~ #
7.2查看当前使用的是哪种DM
linux-08wz:~ # pstree|grep dm
|-gdm---gdm-simple-slav-+-X
| |-gdm-session-wor
| |-gdm-simple-gree
linux-08wz:~ #
说明是gdm
7.3修改配置文件
一共需要修改四个地方:
a、linux-08wz:~ # egrep -v '^$|^#' /etc/sysconfig/displaymanager
DISPLAYMANAGER="gdm"
DISPLAYMANAGER_REMOTE_ACCESS="yes" //默认是no,改为yes
DISPLAYMANAGER_ROOT_LOGIN_REMOTE="yes" //默认是no,改为yes
DISPLAYMANAGER_STARTS_XSERVER="yes"
DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN="no"
DISPLAYMANAGER_AUTOLOGIN=""
DISPLAYMANAGER_PASSWORD_LESS_LOGIN="no"
DISPLAYMANAGER_AD_INTEGRATION="no"
DISPLAYMANAGER_SHUTDOWN="root"
DISPLAYMANAGER_RANDR_MODE_VGA=""
DISPLAYMANAGER_RANDR_MODE_auto="1024x768_60 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync"
DISPLAYMANAGER_XSERVER="Xorg"
linux-08wz:~ #
b、linux-08wz:~ # egrep -v '^$|^#' /etc/X11/xdm/Xaccess
* #any host can get a login window //查看这一行,默认不需要修改,如果是被注释的,去掉注释,启用这一行
* CHOOSER BROADCAST #any indirect host can get a chooser
linux-08wz:~ #
c、linux-08wz:~ # grep 'requestPort' /etc/X11/xdm/xdm-config
!DisplayManager.requestPort: 0 //默认是启用的,注释掉,注意用“!”注释
linux-08wz:~ #
d、linux-08wz:~ # cat /etc/gdm/custom.conf
# GDM configuration storage
[xdmcp]
# SuSEconfig: displaymanager:DISPLAYMANAGER_REMOTE_ACCESS
Enable=true
[chooser]
[security]
# SuSEconfig: displaymanager:~DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN
DisallowTCP=false
# SuSEconfig: displaymanager:DISPLAYMANAGER_ROOT_LOGIN_REMOTE
AllowRemoteRoot=yes
[debug]
linux-08wz:~ #
这个文件和CentOS的一样
7.4重启服务
linux-08wz:~ # init 3
linux-08wz:~ # init 5
linux-08wz:~ # netstat -antulp|grep 177
udp 0 0 0.0.0.0:177 0.0.0.0:* 10263/gdm
linux-08wz:~ #
7.5防火墙的设置
方法一:linux-08wz:~ # init 3
linux-08wz:~ # init 5
linux-08wz:~ # netstat -antulp|grep 177
udp 0 0 0.0.0.0:177 0.0.0.0:* 10263/gdm
linux-08wz:~ #
注意:这种方法是在默认情况下
linux-08wz:~ # /etc/init.d/SuSEfirewall2_init start
Starting Firewall Initialization (phase 1 of 2) done
linux-08wz:~ # /etc/init.d/SuSEfirewall2_setup start
Starting Firewall Initialization (phase 2 of 2) done
linux-08wz:~ # chkconfig --list|grep fire
SuSEfirewall2_init 0:off 1:off 2:off 3:on 4:off 5:on 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:on 4:off 5:off 6:off
linux-08wz:~ #
方法二:linux-08wz:~ # chkconfig SuSEfirewall2_setup off //让开机不启动
linux-08wz:~ # iptables -A INPUT -p tcp --dport 22 -j ACCEPT
linux-08wz:~ # iptables -A INPUT -p udp --dport 177 -j ACCEPT
linux-08wz:~ # iptables -A INPUT -p icmp -j ACCEPT
linux-08wz:~ # iptables-save > /etc/iptables.sh //将规则保存
linux-08wz:~ # cat /etc/iptables.sh
# Generated by iptables-save v1.4.6 on Sun Oct 6 16:23:06
*raw
:PREROUTING ACCEPT [492:37226]
:OUTPUT ACCEPT [370:41138]
-A PREROUTING -i lo -j NOTRACK
-A OUTPUT -o lo -j NOTRACK
COMMIT
# Completed on Sun Oct 6 16:23:06
# Generated by iptables-save v1.4.6 on Sun Oct 6 16:23:06
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [67:7123]
:reject_func - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m state --state RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 177 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun Oct 6 16:23:06
linux-08wz:~ # cat /etc/init.d/after.local //默认不存在,需要自己创建,开机会加载
#!/bin/bash
/usr/sbin/iptables-restore /etc/iptables.sh
linux-08wz:~ #
7.6关闭windows端的防火墙
7.7测试登录