linux远程桌面

$DISPLAY参数作用
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:
DISPLAY=:0.0
使用xdpyinfo可以查看到当前显示的更具体的信息.
DISPLAY环境变量格式如下host:NumA.NumB, host指Xserver所在的主机主机名或者ip地址, 图形将显示在这一机器上, 可以是启动了图形界面的Linux/Unix机器, 也可以是安装了Exceed, X-Deep/32等Windows平台运行的Xserver的Windows机器. 假如Host为空, 则表示Xserver运行于本机, 并且图形程序(Xclient)使用unix socket方式连接到Xserver, 而不是TCP方式. 使用TCP方式连接时, NumA为连接的端口减去6000的值, 假如NumA为0, 则表示连接到6000端口; 使用unix socket方式连接时则表示连接的unix socket的路径, 假如为0, 则表示连接到/tmp/.X11-unix/X0 . NumB则几乎总是0.
假如使用su username或者su - username切换到别的用户, 并且使用命令
export DISPLAY=:0.0
设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:
Xlib: connection to “:0.0” refused by server
Xlib: No protocol specified
Error: Can’t open display: :0.0
这是因为Xserver默认情况下不答应别的用户的图形程序的图形显示在当前屏幕上. 假如需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令
xhost +
这个命令将答应别的用户启动的图形程序将图形显示在当前屏幕上.
在2台Linux机器之间, 假如设置服务器端配置文件/etc/ssh/sshd_config中包含
X11Forwarding no
客户端配置文件/etc/ssh/ssh_config包含
ForwardX11 yes
则从客户端ssh到服务器端后会自动设置DISPLAY环境变量, 答应在服务器端执行的图形程序将图形显示在客户端上. 在服务器上查看环境变量显示如下(这个结果不同的时候并不相同)
DISPLAY=localhost:10.0
在客户机上用netstat -lnp可以看到有程序监听了6010端口
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4827/1
假如希望答应远程机器上的图形程序将图形显示在本地机器的Xserver上, 除了要设置远端机器的DISPLAY环境变量以外, 还需要设置本地机器的Xserver监听相应的TCP端口. 而现在的Linux系统出于安全的考虑, 默认情况下不再监听TCP端口. 可通过修改/etc/X11/xinit/xserverrc文件, 将
exec /usr/bin/X11/X -dpi 100 -nolisten tcp
修改为
exec /usr/bin/X11/X -dpi 100
答应在直接使用startx启动图形时启动对TCP端口的监听.
修改/etc/kde3/kdm/kdmrc, 将
ServerArgsLocal=-nolisten tcp
修改为
ServerArgsLocal=
答应kdm作为显示管理器时, 启动会话时监听相应的TCP端口.
修改/etc/gdm/gdm.conf, 在[Security]一节增加
DisallowTCP=false
或者在登陆窗口选择"Options" -> "Configure Login Manager…“的Security页面, 取消"Deny TCP connections to Xserver”, 答应gdm作为显示管理器时, 启动会话时监听相应的TCP端口.

startx命令用来启动X Window,实际上启动X Window的程序为xinit。
语法
startx(参数)
参数
客户端及选项:X客户端及选项;
服务器及选项:X服务器及选项。
实例
要在工作站上或 X 终端上启动 X 会话,请输入:
startx
要在工作站上强制启动 X 会话,请输入:
startx -w
要为 X 终端启动 X 会话,并注销用户的 telnet 会话,请输入:
startx; kill -9 $$
要使用 .xinitrc 脚本启动 X 会话,请输入:
startx -x .xinitrc
要使用 mwm 窗口管理器启动 X 会话,请输入:
startx -m mwm
但是,如果找到启动脚本文件,则忽略-w选项。在启动脚本中,启动窗口管理器、装入X资源以及产生X客户机是用户的责任。以下是.xsession脚本的一个示例。
#!/bin/csh
(mwm &)
xrdb -load .Xdefaults
(xclock -g 75x75+0+0 &)
(xbiff -g 75x75+101-0 &)
if ("/dev/lft*" == “tty”) then
aixterm -g 80x24+0+0 +ut -C -T hostname
else
aixterm -g 80x24+0+0 +ut -T hostname
endif
对于工作站,startup脚本中的最后一行应该是前台aixterm命令,该命令带有-C选项表示控制台信息。对于X终端,startup脚本中的最后一行应该是不带有-C选项的前台aixterm命令。另外,由于某些X终端在关闭时不终止telnet会话,所以用户必须在使用热键切换至X会话前退出当前的telnet会话。
/usr/lib/X11/xdm/Xsession文件中的xdm命令也可以使用startx命令。这为xdm命令提供了startx命令的功能。
以下是启动X会话一贯使用的文件名。
$HOME/.xerrors 其中,startx 用来重定向错误消息。在缺省情况下,startx 将错误重定向至用户主目录中的 .xerrors 文件中。
$HOME/.Xinit,
$HOME/.xinit,
$HOME/.Xinitrc,
$HOME/.xinitrc,
$HOME/.xsession 作为包含 shell 命令的“启动文件”来启动窗口管理器、装入 X 资源并产生 X 客户机。
$HOME/.Xdefaults,
$HOME/.xresources 作为装入的 X 资源文件来设置 X 客户机的用户首选项。
$HOME/.mwmrc mwm 配置文件。
$HOME/.twmrc twm 配置文件。
$HOME/.awmrc awm 配置文件。
$HOME/.uwmrc uwm 配置文件。
/dev/lft* 终端或 tty、工作站初始 login shell 的界面。

配置X Windows使用XDMCP来进行远程桌面连接
在linux上一般安装图形界面GDM,KDM,Lightdm(mate等)来管理X Windows,下面是在目标机器上配置相应的文件来打开X Windows的远程连接
1、GDM
gnome的display manager程序
GDM修改以下文件

vi /etc/gdm/gdm.conf

GDM3修改以下文件

vi /etc/gdm3/daemon.conf

vi /etc/gdm/custom.conf

修改以下内容:
[security]
DisallowTCP=false
[xdmcp]
Enable=true
[gui]
或者更详细设置
[daemon]
[security]
AllowRemoteRoot=true
DisallowTCP=false
[xdmcp]
Enable=1
Port=177
MaxSessions=64
DisplaysPerHost=8
[greeter]
[chooser]
[debug]
重启机器或X Windows。
2、KDM

vi /etc/kde4/kdm/kdmrc

开启xdmcp
[Xdmcp]
Enable=true

vi /etc/kde4/kdm/Xaccess

允许外部机器访问

any host can get a login window

重启机器或X Windows。
3、 Lightdm

vi /etc/lightdm/lightdm.conf

开启xdmcp

[XDMCPServer]
enabled=true
port=177
#key=

重启机器或X Windows。

Xbrowser-XDMCP远程访问RHEL5.3配置
主要修改以下两个文件(在root权限下):
/usr/share/gdm/defaults.conf //GNOME管理默认的配置文件
/etc/inittab //inittab进程的主配置文件
1、设置defaults.conf权限
chmod 700 /usr/share/gdm/defaults.conf
2、修改defaults.conf文件
cp /usr/share/gdm/defaults.conf /usr/share/gdm/defaults.conf-bak
vim /usr/share/gdm/defaults.conf
[security]
AllowRoot=true //允许root登录
AllowRemoteRoot=true //允许root远程登录
[xdmcp]
Enable=true
DisplaysPerHost=10
Port=177
3、修改inittab文件
cp /etc/inittab /etc/inittab-bak
vim /etc/inittab
id:5:initdefault:
再把最后一句里
x:5:respawn:/etc/X11/prefdm -nodaemon改成 x:5:respawn:/usr/sbin/gdm
4、重启gdm服务
/usr/sbin/gdm-restart
5、添加防火墙规则
/sbin/iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT
6、保存、重启或关闭防火墙
/sbin/service iptables save //将规则保存在/etc/sysconfig/iptables文件里
/sbin/service iptables restart //重启防火墙
/sbin/service iptables stop //关闭防火墙
/sbin/service iptables status //查看防火墙状态
7、查看177端口监听情况
/bin/netstat -anp |grep 177
/usr/sbin/lsof -i:177

1,CentOS 6.5 minimal Desktop
2,配置CentOS可以访问互联网
开始: 1,使用命令 yum install xdm 安装XDM
通过 XDMCP 支持来管理 X 显示器集合
2,修改/etc/X11/xdm/Xaccess文件,找到下面的语句:# * #any host can get a login window,
去掉这一行最前面的#号,成为:* #any host can get a login window
3,修改/etc/gdm/custom.conf文件。
找到下面的语句:[xdmcp],在这句下面加上以下两行:
Enable=true
Port=177
在[security]下面添加
AllowRemoteRoot=true
修改custom.conf后,必须重启gdm才可以生效。具体做法就是kill进程中的gdm,然后重启gdm:
#/usr/sbin/gdm-restart
4,在防火墙中开启 177端口;修改/etc/sysconfig/iptables文件,
在 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT这一行下面增加下面两行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6000:6010 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 177 -j ACCEPT
小功告成,最后重启 防火墙(service iptables restart)就可以体验远程连接linux 桌面了。

centos 7.x安装配置VNC服务器 运行:vncserver
首先,服务器端需要一个可用的桌面环境。
1.安装X-Window
##installing x windows
yum check-update
yum groupinstall “X Window System”
##install gnome classic session
yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts

设置默认启动图形界面 不懂这里的命令

unlink /etc/systemd/system/default.target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
reboot
在服务器重启之后,我们就有了一个工作着的 CentOS 7 桌面环境了。
现在,我们要在服务器上安装 VNC 服务器了。
2 安装VNC服务器
yum install tigervnc-server -y
运行此命令VNC服务器安装完成!
3 配置 VNC
然后,我们需要在 /etc/systemd/system/ 目录里创建一个配置文件。我们可以将 /lib/systemd/sytem/[email protected] 拷贝一份配置文件范例过来。修改配置文件。这里我使用VIM编辑器打开。
ExecStart=/sbin/runuser -l -c “/usr/bin/vncserver %i”
PIDFile=/home//.vnc/%H%i.pid
<>内的内容需要替换,如果服务器运行在root权限下,可以使用root替换,如果是自己创建的用户,则替换成你的用户名。
第二条命令,则替换成root用户的目录root
PIDFile=/root/.vnc/%H%i.pid
之后重启systemd。
systemctl daemon-reload
最后还要设置一下用户的 VNC 密码。要设置某个用户的密码,必须要有能通过 sudo 切换到用户的权限,这里我用root 的权限,执行“vncpasswd”就可以了。
密码长于6个字符。
4 开启服务
用下面的命令(永久地)开启服务:
systemctl enable vncserver@:1.service
启动服务
systemctl start vncserver@:1.service
5 防火墙设置
我们需要配置防火墙来让 VNC 服务正常工作。
centos7不同于之前的版本了。
firewall-cmd --permanent --add-service vnc-server
systemctl restart firewalld.service
安装到这里我遇到了一问题,系统提示:Unit firewalld.service is masked
我是这样解决的:
systemctl unmask firewalld
具体的原因就是因为之前说的centos7 不同于以前的版本。想搞清楚的同学链接在此点这里
之后再尝试启动服务。
6 使用VNC客户端连接服务器
现在服务器端已经配置成功,接下来使用VNC客户端远程控制VNC服务器。
前面说了一些VNC软件。这里提供了软件链接Tightvnc viewer。
现在就可以用 IP 和端口号(如:192.168.1.1:1 ,这里的端口不是服务器的端口,而是视 VNC 连接数的多少从1开始排序)来连接 VNC 服务器了。
如果没记住公网IP可以使用下面几个命令查看公网接口:
curl bot.whatismyipaddress.com
curl checkip.dyndns.org
curl www.pubyun.com/dyndns/getip
引用自:http://www.programgo.com/article/18512821937/
亲测可用~~!
要用更多的用户连接,需要创建配置文件和端口,请回到第3步,添加一个新的用户和端口。你需要创建 vncserver@:2.service 并替换配置文件里的用户名和之后步骤里相应的文件名、端口号。请确保你登录 VNC 服务器用的是你之前配置 VNC 密码的时候使用的那个用户名。
VNC 服务本身使用的是5900端口。鉴于有不同的用户使用 VNC ,每个人的连接都会获得不同的端口。配置文件名里面的数字告诉 VNC 服务器把服务运行在5900的子端口上。在我们这个例子里,第一个 VNC 服务会运行在5901(5900 + 1)端口上,之后的依次增加,运行在5900 + x 号端口上。其中 x 是指之后用户的配置文件名 vncserver@:x.service 里面的 x 。
systemctl stop vncserver@:1.service 关闭 VNC 服务。
systemctl disable vncserver@:1.service禁止 VNC 服务开机启动。
systemctl stop firewalld.service防火墙。

xmanager远程桌面centos7
1.安装 lightdm
sudo yum install lightdm
2.配置 lightdm,如果不存在,则创建之
sudo vi /etc/lightdm/lightdm.conf
内容如下:
[XDMCPServer]
enabled=true
port=177
3.修改默认 display manager 为 lightdm
sudo systemctl disable gdm
sudo systemctl enable lightdm
4.开始 lightdm,注意,有可能会黑屏,我的是闪屏闪了一断时间后黑屏,不想等,重启后好了。
sudo systemctl start lightdm
5.关闭防火墙,或自行开启177端口
sudo systemctl stop firewalld.service
6.安装xfce
sudo yum groupinstall xfce
7.xmanager选项
由于用到xfce,用xdmcp界面进不去,会直接崩溃掉。而用xstart是可以的,但是界面是支离破碎的,只有2个面板,然后打开某个界面后绘制相应的界面。
配置如下图:
7.效果图
xdmcp图片。注意这个输入密码后会闪退。目前还未找到解决方案。。。。。
可用的如下:

看到图形片正中下方的面板没有,这个是远程的机器上的,点了终端然后弹出了终端的界面,正中间那个界面就是远端机器上的。。。。是不是感觉很不一样。。。。图形界面打散了以元素的形式传递过来了。。。。
8.附上详细配置说明
/etc/lightdm/lightdm.conf

General configuration

start-default-seat = True to always start one seat if none are defined in the configuration

greeter-user = User to run greeter as

minimum-display-number = Minimum display number to use for X servers

minimum-vt = First VT to run displays on

lock-memory = True to prevent memory from being paged to disk

user-authority-in-system-dir = True if session authority should be in the system location

guest-account-script = Script to be run to setup guest account

logind-load-seats = True to automatically set up multi-seat configuration from logind

logind-check-graphical = True to on start seats that are marked as graphical by logind

log-directory = Directory to log information to

run-directory = Directory to put running state in

cache-directory = Directory to cache to

sessions-directory = Directory to find sessions

remote-sessions-directory = Directory to find remote sessions

greeters-directory = Directory to find greeters

backup-logs = True to move add a .old suffix to old log files when opening new ones

[LightDM]
start-default-seat=true
greeter-user=lightdm
#minimum-display-number=0
minimum-vt=1
#lock-memory=true
user-authority-in-system-dir=true
#guest-account-script=guest-account
#logind-load-seats=false
#logind-check-graphical=false
#log-directory=/var/log/lightdm
#run-directory=/var/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters
#backup-logs=true

Seat defaults

type = Seat type (xlocal, xremote)

xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server

pam-service = PAM service to use for login

pam-autologin-service = PAM service to use for autologin

pam-greeter-service = PAM service to use for greeters

xserver-command = X server command to run (can also contain arguments e.g. X -special-option)

xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)

xserver-layout = Layout to pass to X server

xserver-config = Config file to pass to X server

xserver-allow-tcp = True if TCP/IP connections are allowed to this X server

xserver-share = True if the X server is shared for both greeter and session

xserver-hostname = Hostname of X server (only for type=xremote)

xserver-display-number = Display number of X server (only for type=xremote)

xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)

xdmcp-port = XDMCP UDP/IP port to communicate on

xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)

unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)

unity-compositor-timeout = Number of seconds to wait for compositor to start

greeter-session = Session to load for greeter

greeter-hide-users = True to hide the user list

greeter-allow-guest = True if the greeter should show a guest login option

greeter-show-manual-login = True if the greeter should offer a manual login option

greeter-show-remote-login = True if the greeter should offer a remote login option

user-session = Session to load for users

allow-user-switching = True if allowed to switch users

allow-guest = True if guest login is allowed

guest-session = Session to load for guests (overrides user-session)

session-wrapper = Wrapper script to run session with

greeter-wrapper = Wrapper script to run greeter with

guest-wrapper = Wrapper script to run guest sessions with

display-setup-script = Script to run when starting a greeter session (runs as root)

display-stopped-script = Script to run after stopping the display server (runs as root)

greeter-setup-script = Script to run when starting a greeter (runs as root)

session-setup-script = Script to run when starting a user session (runs as root)

session-cleanup-script = Script to run when quitting a user session (runs as root)

autologin-guest = True to log in as guest by default

autologin-user = User to log in with by default (overrides autologin-guest)

autologin-user-timeout = Number of seconds to wait before loading default user

autologin-session = Session to load for automatic login (overrides user-session)

autologin-in-background = True if autologin session should not be immediately activated

exit-on-failure = True if the daemon should exit if this seat fails

[SeatDefaults]
#type=xlocal
#xdg-seat=seat0
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
xserver-command=X -background none
#xmir-command=Xmir
#xserver-layout=
#xserver-config=
xserver-allow-tcp=true
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
greeter-session=lightdm-greeter
#greeter-hide-users=false
#greeter-allow-guest=true
greeter-show-manual-login=true
#greeter-show-remote-login=true
#user-session=default
#allow-user-switching=true
#allow-guest=true
#guest-session=
session-wrapper=/etc/X11/xinit/Xsession
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=UNIMPLEMENTED
#exit-on-failure=false

Seat configuration

Each seat must start with “Seat:”.

Uses settings from [SeatDefaults], any of these can be overriden by setting them in this section.

#[Seat:0]

XDMCP Server configuration

enabled = True if XDMCP connections should be allowed

port = UDP/IP port to listen for connections on

listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)

key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)

The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively

it can be a word and the first 7 characters are used as the key.

[XDMCPServer]
enabled=true
port=177
#listen-address=
#key=

VNC Server configuration

enabled = True if VNC connections should be allowed

command = Command to run Xvnc server with

port = TCP/IP port to listen for connections on

listen-address = Host/address to listen for VNC connections (use all addresses if not present)

width = Width of display to use

height = Height of display to use

depth = Color depth of display to use

[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#listen-address=
#width=1024
#height=768
#depth=8

你可能感兴趣的:(linux-X)