Linux远程桌面的选择

CentOS 7.9-minimal 中 Xvnc - v1.8.0-22 的安装配置 Xvnc,即是TigerVNC Server,是常用的一款远程桌面工具,同款软件还有 xrdp。相比xRDP协议,连接速度对于常规操作来说,VNC(xRDP协议)解决方案在Linux服务器上使用时,可以获得更好的日常操作远程控制体验。Xvnc-1.8.0-22 是 CentOS7 等 YUM 安装默认版本。一般使用离线 RPM 包或 YUM 源去安装即可,没必要研究如何编译。 阅读详情

Linux的远程桌面主要分两个部分:Linux客户机连Linux服务器和Windows客户机连Linux服务器,还有现在用平板电脑连远程桌面。Linux客户机连Windows服务器比较简单没啥可说的,rdesktop和termianl server比起windows自带的“远程桌面连接”,不说好很多,至少是毫不逊色的。我们知道,Windows的非服务器版可以支持远程桌面,不过远程一登录,原来机子上要是有人在用,就会被注销;而Windows服务器版是默认只支持两个用户,对多用户远程登录也支持要付费的,或者就只能享受4个月的的试用,再或者就是自己破解了。自由而免费的Linux任意版本都是可以自己配置的,因此远程桌面想怎么登就怎么登,只要机器性能允许,甚至同一用户登无数个都可以的。Linux系统大部分在网络上做服务器,一般服务器是不开图形界面的,一方面是性能和稳定性的考虑,另一方面是管理这些服务器的人技术能力比较强,所以不太用图形界面管理服务器的。不过现在Linux的桌面用户越来越多,喜欢用图形界面登录到Linux机器,尤其是跨平台远程登录Linux桌面环境使用的需求越来越多。

下文中会提供很多方案,我将从最基础的X服务器讲起,先讲不借助其它客户端软件,而仅仅用X服务器来登录远程服务器的方式,再讲使用安全简单方便的SSH协议支持的X转发,接下来是XDMCP协议,这部分中间介绍一些开源软件客户端,然后是使用SSH结合XDMCP的安全远程登录,再接下来是使用SSH+Xephyr的无需DM的登录方式,再然后是VNC协议方式(可以登录已经打开的界面,但是效率比较低,且安全性不好,最好配合ssh隧道使用),最后是简单介绍界面最友好、功能最全面的闭源个人免费软件Splashtop和NX。由于我日常用的就是Ubuntu,下面的有些例子都是以Ubuntu例,不过Linux原理都是一样的,希望对所有用户都有所帮助。

Linux连Linux

Remote X 

我们现在用的桌面Linux系统一般都是默认装了X windows 系统。X windows系统设计的最初,就考虑了网络的情况,它的客户端(X Client,就是通常的图形应用程序)和服务器端(X Server)是分开的。你机器上X服务器上执行的是本地的还是远程的图形界面,是没有分别的,只是后者要通过网络协议传输到本地。SSH协议、XDMCP协议以及VNC协议都是传输数据的网络协议,远程服务器上的X Client(比如说gdm)把它的输出通过网络协议传送到客户机上,客户机上的X Server在本地接收(并显示)图形界面。
我们先说在本机上多开几个图形界面吧,不是当前界面下建图形窗口,而是在其它控制台下创建图形界面,简单总结下是这样的:
A.   在第p个控制台开个编号为n的图形界面(需要root权限): X :n vtp
B.  设置DISPLAY变量: export DISPLAY=localhost:n
C.  现在你运行的图形应用程序就会在第p个控制台上的图形界面上运行了;
查看第p个控制台,按Ctrl+Alt+Fp切换(p=1~12),一般Linux系统默认1~6是文字界面,7~12是图形界面。
那么,为什么不能在本地控制台下多开个图形显示界面,用于执行远程服务器的图形界面呢?
翻了几个帖子,与在本地几乎是类似的:
A.   在客户机上第p个控制台开个编号为n的图形界面(需要root权限): X :n vtp
B.   在客户机上执行:xhost + 服务器IP;
C.   远程登录到服务器:ssh 或才telnet等都可以;
D.   设置远程服务器的DISPLAY变量:export DISPLAY=客户机IP:n ;
E.   然后在远程服务器运行xterm之类图形应用程序,就会在客户机上显示。
这种方式是比较古老的了,B 是用xhost作ip控制,据说ip是比较容易伪造的,所以这个东西很不安全。
由于Ubuntu是Debian一系的,于是把客户机/etc/X11/xinit/xserverrc中的-nolisten tcp去掉,同时还把gdm的配置文件/etc/gdm/gdm.schemas中的security/DisallowTCP关健字的值改为true了,重启X。SSH到服务器后,export DISPLAY=客户机IP:0.0,可以在从当前的这个会话中显示远程图形应用程序,和下面要说的ssh -X的效果似乎一样了。但是自己用sudo X :1 vt12开的界面还是没法显示远程图形应用程序,而且这样的配置按参考的网页上的说法,也是有安全风险的,还是改回去了。
所以,对于这个Remote X,我还是没完全搞定,但是这个东西是最基础的原理,明白多少得说多少。(按照网页上的说法,我觉得问题可能出在权限问题上,接下来要研究下.Xauth和.Xauthority)

SSH的X转发

最简单最安全的方式要属SSH的X转发,而且用它可以实现后面的XDMCP转发,如果SSH是配好了无密码访问,这个更是爽得很啦。

ssh -X 用户名@服务器IP  #这个时候就可以运行服务器上有图形界面的程序了;

我用过直接gnome-panel(最好不要gnome-session,可能会出问题哟),它会菜单替代成远程服务器的菜单,但是窗口选择器里会有你自己机器上正在运行的程序,这个就可以看很多事了。如果你只执行一条命令,还可结合ssh可以远程执行命令的功能直接开某个程序,比如:ssh -X 用户名@服务器IP -n gnome-panel

我不知道OpenSSH是不是不支持开一个窗口或在其它控制台开一个图形界面去执行远程的图形界面,要是那样的话,我们就可以不用不怎么安全的XDMCP协议了(在相对安全的局域里,追求速度的时候还是能用到的)。

XDMCP

全称是X Display Manager Control Protocol,也就是X显示管理器控制协议。

服务器如果是最新的gdm,修改/etc/gdm/gdm.shemas(老版的在/etc/gdm/gdm.conf),改含xdmcp/Enable那段中的false为true,然后重启gdm就可以了。

而对于客户端,就有很多选择了
X命令登录
以X做客户端,由于现在的X Windows系统基本都是默认安装的,所以我们可以说等于什么也不用装,只用命令就可以远程图形界面连接到服务器上:sudo X :1 -query 服务器IP ,这个正是利用了前面说到的X服务器的功能,在其它控制台新开一个图形界面去显示远程服务器的图形界面。当然我们采用其它图形客户端也是可以的了。这些客户端一般是会开一个窗口,而不是在其它控制台去建一个显示界面。
使用Xnest

sudo apt-get install xnest  然后“终端服务客户端”(也就是tsclient,装了gnome这一套东西应该是默认就有的)里看到xdmcp协议是可以选的了,填IP,连接再选用户填密码就可以了;在客户机中命令行下也可以使用:Xnest :1 -query -reset -terminate 服务器IP (reset 和terminate不要也可,最好加上)

Xephyr
其实Xephyr 比Xnest 更好,它支持OpenGL的,所以远程桌面如果有3D特效还有3D游戏都是能在Xephyr 窗口中显示的,而Xnest不行。Xephyr 有很多开发者在用,因为可以当成一个桌面模拟环境来用,测试各种窗口管理器、图形界面。
安装:sudo  apt-get install xserver-xephyr  用法与Xnest是类似的:Xephyr :1 -query -reset -terminate 服务器IP

SSH+XDMCP

XDMCP 好像密码是明文传送?那么采用ssh的X转发,转发服务器本地的XDMCP协议到客户机,这样就实现了安全的XDMCP远程登录。由于X命令是要root权限,以及前面的用export DISPLAY的方法把远程服务器图形界面传递到本地显示有问题,这里就只有用其它客户端的办法了。这样的话,需要远程服务器安装 Xephyr 或 Xnest。

客户机:ssh -X 用户名@服务器IP 登录到远程服务器;然后在远程服务器上执行:Xephyr :1 -query localhost 或 Xnest :1 -query localhost ;

也可以直接把登录和执行放一起:ssh -X 用户名@服务器IP -n Xephyr :1 -query localhost  (或Xnest :1 -query localhost)。

SSH+Xephyr

Xephyr 本来是用来给虚拟机使用的一个软件,能在本机上开多个窗口用来测试各种界面,不用Ctrl+Alt+Fn切换来切换去的。除了部分开源的NX,我发现使用开源软件最简单的远程登录方式(在SSH配置好的情况下),应该是下面这种 SSH+Xephyr 的方式了,服务器只要配好SSH,其它的都在客户机中进行:
Xephyr -fullscreen -host-cursor -reset -terminate -ac :2 > grl.log" &
ssh -X usrname@hostname -n gnome-session --display=myip:2   
#myip写的是自己的IP地址;
写到脚本里面,使用起来很方便,这是笔者目前最喜欢的方式。喜欢它的主要原因是:不用输密码(SSH已经配置好了密钥,不用密码;如果再用XDMCP协议,就还会有个登录界面,要输密码),也是在当前图形界面下开一个图形窗口的方式,不用切换控制台了。相对于NX,它是开源的。给Xephyr 写个界面,结合 ssh,应该可以做个很好的Linux远程客户端。
但是这种方式,不是通过gdm这样的窗口管理器登录,有时会出些小问题,比如说桌面右键用不了什么的,特别可能在Ubuntu这种系统,很多软件默认配置为了用户的易用性已经做过很多集成的话。事实上ssh+Xephyr+XDMCP的方式可能更好些。

VNC

VNC协议是截取当前桌面的图形,传送给远程客户端,效率安全性都不是很好,时常在局域网里都会卡;另外它会显示给当前在用的这个帐户的用户在干什么,而且两个人对鼠标和键盘都有控制权,会有冲突。不过当你需要的就是对当前已经打开的图形界面进行操作时,这种方式无疑就很有用了。Ubuntu下默认带有vnc服务器vino-server,在 系统-->系统管理-->远程桌面 里设置它,注销(重启gdm)就行了。而客户端也是默认有的,系统-->互联网-->远程桌面查看器 就是了。
推荐使用x11vnc,初级用法挺简单:x11vnc -display :0 -passwd ***** 就能登录当前的:0图形界面了(一般情况下默认的图形界面)。
使用ssh 隧道来加密更安全:
ssh -t -L 5900:localhost:5900 user@remotehost 'x11vnc -localhost -display :0' &
ssvncviewer localhost:5900

Splashtop和NX

Splashtop及TeamViewer

之前我一直觉得NX是Linux下最好的远程桌面软件,虽然是闭源的。但是现在情况有所改变,随着平板电脑的兴起,出现了一些远程桌面软件,笔者接触到的有TeamViewer和Splashtop,它们在效率上可能比NX更好,支持的其它系统的客户端也比较全,甚至平板电脑使用Linux远程桌面,还能听音乐、看电影。

Teamviewer和Splashtop一样,两者都是商业软件,但是都对个人用户免费。它们都是要注册一个帐户,然后你需要在联网的情况下登录这个帐户,就可以看到你的多台PC。随便你走到哪儿,只要安装并打开了它们的服务器的PC都可以看到,你可以选择登录自己想要使用的PC。这种多台PC的管理要通过这些私有软件的官方服务器,给安全性带来一定问题。要是像Owncloud那样,能自己架设一个管理服务器,而不用通过它们官方的服务器,无疑还是有点意思的,这样的开源版本无疑可以作为一个努力方向。不过像邮件服务一样,有了强大免费的gmail之类的提供商,这年头个人谁还自己去架设自己的邮件服务器。
Splashtop是用python结合原生库来做,效率要高一点,而TeamViewer中间有用到wine,就笔者的使用体验来说,确实网络传输效率没这么高。所以笔者更推荐Splashtop,虽然目前而言Teamviwer支持的Linux系统更多,而Splashtop只支持Ubuntu 12.04以后的版本。
Splashtop的服务器版本叫Splashtop Streamer,客户端版本有很多,普通用户选择个人版本就可以了。Splashtop已经开始在Ubuntu的应用中心集成了。不过Splashtop的Linux版客户端目前还是beta版,最多只支持1024x768的分辨率,用起来远不如平板电脑版本的好!!!
NoMachine NX
虽然比不上Splashtop,NoMachine NX 界面很友好,使用上比Splashtop简单的、功能也比较完整。相对于Splashtop,它是老牌的Linux远程桌面软件,NoMachine公司的NX的免费个人版本可供使用,甚至还有一个开源的NX协议的实现FreeNX、NeatX。NX协议比VNC协议效率要高不少,所以远程桌面也很流畅(虽然达不到splashtop能看电影的那种程度)。它有开源的替代版本NeatX和FreeNX,也使用了SSH进行加密(也可以选不加密),不过它采用的私有的SSH系统。
网址下载:http://www.nomachine.com/select-package.php?os=linux&id=1
服务器端安装nxclient,nxnode,nxserver三个软件包,客户端只安装nxclient就可以了。
nxclient 是有图形界面的,很容易使用,就不多说了。而nxserver安装后就立刻启动,而且每次开机会自动启动,所以什么都不用操心。它是可以保持图形界面在服务器上运行的,这个功能是挺好的。但是也要注意,如果你不想要这样的时候,确定你不是关掉它(Disconnet)而是结束这个会话(Terminate)。设置中看还有支持多媒体的选项,但是我设置了,只能听到远程服务器用户登录或注销的声音。
关于开源的FreeNX和NeatX,可以参考:
http://www.vpsee.com/2009/09/remote-access-to-ubuntu-desktop/
http://freenx.berlios.de/
https://code.google.com/p/neatx/

Windows连Linux 

VNC

VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源。经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称。VNC的原理就是不停的对窗口界面截屏,再将图像传输给客户端,同时VNC服务器端接管服务器端的键盘、鼠标控制权,客户端可以通过服务器端操纵键盘鼠标。比较类似Windows下的pcAnywhere。

先讲Windows端,下述的两个VNC可以用同一个客户端连接。在Windows平台上,客户端我选择了RealVNC。RealVNC包括了一整套的服务器端与客户端,如果只安装客户端是不需要注册码的,其客户端程序名为vncviewer.exe,这是个绿色软件,你可以从安装目录下拷贝到其他电脑中运行。

下面介绍Linux下常用的两个VNC软件。
Vino
VINO是Gnome中集成的一个VNC软件,安装Gnome环境时默认安装,点击“系统”-“首选项”-“远程桌面”就打开了其配置窗口。选中“允许其他人查看您的桌面”后VINO就会启动服务器端进程vino-server,同时它监听TCP 5900端口。如果不选中“允许其他用户控制您的桌面”,客户端则只能观看不能操纵。
VINO的模式与下面介绍的XVNC有很大不同,我觉得VINO其实是“Windows下的远程协助”,因为客户端显示的桌面与Linux端本地显示器中显示的桌面一样,如果你操纵客户端中的鼠标,Linux的显示器也能看到鼠标在跑。如果你在Windows下安装过VNC服务器端,效果就是这个样。
另外,VINO的带宽占用真是变态,就算是一进桌面什么都不打开无操作的情况下,带宽也要占到4-5Mbps(桌面1280×1024,色彩24),如果有操作会占到8-12Mbps。所以,VINO不适合做为服务器的日常远程管理,比较适合做为Linux下的远程协助和远程教学,也就是说你遇到一个问题,求助高手,而高手可以手把手的教你,你可以直接观看屏幕学习,或者做故障重现,你在本地做故障或Bug重现,而工程师可以远程观看。
XVNC
XVNC 就是大家所熟悉的vnc或vncserver,是由RealVNC公司开发的开源版的VNC软件。

1、XVNC安装
安装Linux时,可以从安装包中选中。若没有安装,可以从安装盘中找到。服务器的组件名叫 vnc-server。请执行 rpm -q vnc-server 这个指令查看是否安装;假如服务器未被安装,请用这个指令来安装它:yum install vnc-server。

2、启动vncserver
在终端中输入:vncserver :1 -geometry 1280x1024 –depth 24  # :1指1号窗口,-geometry指窗口分辨率,-depth指色彩数;也可以简单的指定:vncserver :1  #使用RealVNC的客户端,窗口分辨率与色彩数可以在客户端指定;
当你第一次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输入;窗口可以从0开始指定,如果Linux本地端已经启用图形环境,则必须从1开始指定,因为窗口0被X11占用。

3、配置xstartup
XVNC默认采用twm做为图形环境,如果你安装了KDE或Gnome也可以启动。
vi ~/.vnc/xstartup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc 
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
 
最后一行twm &表示启动twm,修改成gnome-session & 即启动Gnome,修改成startkde & 即启动KDE。
如果Linux本地端已经启用Gnome或KDE图形环境,当VNC客户端连接服务器后,可能会只显示灰屏,没有正常启用图形环境。查看~/.vnc下的日志时会提示错误:You are already running a session manager。这时还需要修改 xstartup 文件中的: 
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
去掉这两行前的#,再重启vncserver。如果Linux本地端是init 3模式,则不需要修改这两行。一般vnc客户端连接服务器时显示的界面是英文的,主要是中文环境还没有装入,而且没有中文输入法,这是可以在 # exec /etc/X11/xinit/xinitrc 行后添加下面内容:
export LANG=zh_CN.UTF-8  注:启用中文环境 
scim –d                                     注:加载scim输入法
 
4、关闭 vncserver
vncserver –kill :1  注:关闭窗口1,以此类推关闭窗口2就为:2,当所有窗口都关闭vncserver服务就关闭了。

5、VNC客户端使用
XVNC不仅支持vncview等客户端程序,还支持浏览器控制。浏览器直接输入地址 http://IP:5800,就会启动Java客户端连接。
窗口0占用TCP 5900端口(VNC客户端),TCP 5800端口(浏览器);
窗口1占用TCP 5901端口(VNC客户端),TCP 5801端口(浏览器);
窗口2、3以此类推;
 
6、开机自启动vncserver
上面的操作都是要先登录Linux端,然后手动启动vncserver服务后,才能使用VNC连接。如果你想开机自启动vncserver服务,必须这样做。先按上面的步骤启动一次 vncserver,确保密码和xstartup文件都建立了。然后,vi /etc/sysconfig/vncservers,添加如下内容:
VNCSERVERS="1:root 2:zhang 3:li"  
注:1、2、3代表窗口,比如root用户用窗口1,zhang用户用窗口2,这里的用户是指Linux中的正规的用户帐户
VNCSERVERARGS[1]="-geometry 640x480 –depth 24"  
注:为root用户指定分辨率和色彩数,这里的[1]指上面的“1:root”
VNCSERVERARGS[2]="-geometry 640x480 –depth 16" 
 注:为zhang用户指定分辨率和色彩数 
VNCSERVERARGS[3]="-geometry 800x600"
注:上面的这三行可以不添加,由vnc客户端自行控制分辨率和色彩。
上面的root、zhang、li用户必须确保密码和xstartup文件都建立了,你可以分别登录先执行一次vncserver :1。最后执行 /sbin/chkconfig vncserver on指令。
  
7、VNC安全
XVNC的数据传输都是明文的,因涉及服务器的管理,使用明文是不可接受的。我们可以使用SSH加密VNC数据。
首先,开启Linux端的SSH服务。
第二,在Windows端下载一个SSH telnet工具,推荐的有PuTTy,SecureCRT。
第三,启用SSH隧道。
下面以SecureCRT为例,PuTTy操作类似。先建立一个连接到Linux端的普通SSH会话。在该会话选项中“端口转发”中,添加“本地端口转发属性”。在“本地”中输入一个端口,这里选择了5901,也可以选择5801或其他端口,只要不与本地的服务相冲突,这个本地端口与Linux中vncserver监听的窗口端口无关,在“远程”中输入5901,这个端口是Linux端的vncserver监听的端口,这里是启动窗口1,如果启动窗口2则这里要输入5902,确定。设置完后在SecureCRT中启动与Linux的SSH会话,正确登录Linux后打开vncviewer,在VNC服务器栏位中输入:localhost:5901 (这里的端口就是上面指定的本地端口,而非Linux端的端口),因为这里要连接的是本地的SecureCRT启动的SSH隧道。在VNC运行过程中SecureCRT不能关闭。这样,在Linux端的防火墙就可以只开放SSH端口,关闭掉有关VNC的所有端口。
8、结论
XVNC是一个非常好的日常用服务器管理工具,你可以根据你的网络带宽调整画质,如果你的带宽偏小,可以调小分辨率与色彩数,XVNC无操作时基本没有数据,如果是800×600分辨率,最差画质,它只会占几百Kb甚至十几Kb的带宽,这一点上非常适合做服务器管理。

XManager

XManager是一个简单易用的高性能的运行在Windows平台上的X-Server软件,而Gnome和KDE就是X-Client,Linux下的X-Server则为Xorg。它能把远端Unix/Linux的桌面无缝地带到你的Windows上,甚至当你的电脑是在内网或防火墙后,你也能通过SSH协议安全的运行远端的X应用程序。特点包括: 
-可通过Xcongfig工具设置多个Xmanager设置; 
-支持多用户的Windows终端环境; 
-支持多个IP地址; 
-支持本地资源数据库; 
-通过热键转换键盘映射; 
-支持多窗口下的Windows打印功能等。 
XManager的原理
X-Window并没有规定X-Server与X-Client必须工作在同一台电脑上,所以X-Server可以工作于不同的电脑,而XManager就是Windows平台下的X-Server。XManager与X-Client之间用XDMCP协议相连,Linux端的响应由显示管理器(又叫登录管理器,Gnome的显示管理器为GDM,KDE的显示管理器为KDM,另还有XDM、WDM等)管理,所以Linux端必须启动显示管理器(启动Gnome或KDE)。
Linux 端的配置
开机后就要启动显示管理器。打开 /etc/inittab文件,将 runlevel 变为5,即修改为id:5:initdefault: 如果原来就是5,则不用修改。系统的显示管理器由displaymanager文件管理,此处仅为确定开机后启动显示管理器。
1、配置GDM
适用于Linux默认图形环境为Gnome,默认安装了GDM;
方法1:
编辑 /etc/gdm/custom.conf,添加如下内容:
[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter  
注:与下面的[greeter]项一起达到“远程登录界面与本地登录界面相同”功能,若没有此行及[greeter]项添加的行则登录界面为简洁型;
[security]
AllowRemoteRoot=true  
注:允许root用户远程登录
[xdmcp]
Enable=true  
注:允许远程登录本地,xdmcp默认端口177,此处没有显示的加入Port=177;
[greeter]
Browser=true  
注:见[daemon]项
方法2:
在终端中运行 gdmsetup 或点击菜单中的“登录屏幕”,打开图形化界面。可以调整“远程”和“安全”两项;
2、配置KDM
适用于Linux默认图形环境为KDE,虽然可以同时安装GDM和KDM,但默认只启动只能选其一。
修改 /etc/X11/xdm/Xaccess
#*                  #any host can get a login window
这一行开头的#去掉;
修改 /etc/X11/xdm/xdm-config 的最后一行,在 DisplayManager.requestPort: 0 前面加上一个!号,注释掉该行;
修改 /etc/sysconfig/displaymanager 文件,更改以下内容:
DISPLAYMANAGER_REMOTE_ACCESS=”yes”  
注:允许远程桌面连接
DISPLAYMANAGER_ROOT_LOGIN_REMOTE=”yes” 
注:允许root用户远程连接
3、安全
开放防火墙中的 UDP 177端口,若已禁用防火墙,则可跳过此项。
方法1(适用于终端):
在 /etc/sysconfig/iptables 文件中加入: 
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 177 -j ACCEPT 
方法2(适用于X-Window):
在"系统"->"管理"->"安全级别和防火墙"中"防火墙选项"下的“其它端口"中添加 UDP 177端口。
4、重启服务
生效前必须重启进程,第一种,直接重新启动Linux系统,第二种,重启显示管理器gdm-restart(GDM),重启防火墙service iptables restart。如果Gnome和KDE都安装了则远程登录后可在会话中选择其中一种环境。
Windows 上的设置
在Windows系统里下载 XManager 3,然后安装打开 ,就可以看你的局域网中的Linux了,如果是广域网上的Linux,可以新建一个XDM Indirect的连接。双击打开,输入Linux的管理员账号密码既可。 另外为安全起见,XDMCP可以跑在SSH上,选择Secure XDMCP方法即可。
总结
此方案的缺点也很明显,X-Window是一种尽可能完美的显示方案,它没有可以根据网络带宽进行调整的功能,所以它会尽可能的占用带宽。

XRDP

远程桌面基于RDP协议,相对于 VNC 的好处应该是:联机的过程中有加密、可设定登入时的分辨率、方便切换输入法、操作起来似乎比 VNC 还流畅;在Linux下,如果纯粹只要有 Viewer 的功能可安装 "rdesktop",如果要同时有 Viewer 及 Server 的功能请安装 "xrdp",开源远程桌面 rdp server,利用xrdp远程登陆linux系统,以下介绍 xrdp。
其实 xrdp 是一个 Linux 远程桌面的 "中继程序",为何说 xrdp 是 "中继程序" 呢?因为它还是借用了 VNC 的模块 (libvnc.so),并且 xrdp 除了可以让你用远程桌面联机存取 Linux 桌面之外,还能透过它来登入其它 Windows 的远程桌面、VNC Server,以及任何也有安装 xrdp 的主机。并且是允许你用不同账号进行 "多重登入",这在 Windows 的系统只有 Windows Server 才支持。
所以,Linux下安装了 xrdp 等于是安装了:RDP Server (允许多重登入)+RDP Viewer+XRDP Viewer+VNC Viewer。
安装 xrdp
系统要有 gcc, pam-devel, openssl-devel: yum install gcc pam-devel openssl-devel
然后到 http://xrdp.sf.net 下载 xrdp 的原始档 xrdp-v0.6.0.tar.gz 并安装:
tar -xzvf xrdp-v0.6.0.tar.gz
cd xrdp-v0.6.0
./bootstrap
./configure
make
make install
xrdp 的配置文件
相关配置文件放在 "/etc/xrdp/",该目录下的xrdp.ini和sesman.ini比较重要:
xrdp.ini 关键部分在globals
[globals]
bitmap_cache=yes                 #位图缓存
bitmap_compression=yes     #位图压缩
port=3389                              #监听端口
crypt_level=low                     #加密程度(low为40位,high为128位,medium为双40位)
channel_code=1            
sesman.ini 档案关键部分,在 [Globals] 中的这一行: 
[Globals]
ListenAddress=127.0.0.1       #监听ip地址(默认只允许从本机连结,如果要从别的主机进行操作,可改成 "0.0.0.0")
ListenPort=3350                   #监听端口(默认即可)
EnableUserWindowManager=1     #1为开启,可让用户自定义自己的启动脚本
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
[Security]
AllowRootLogin=1             #允许root登陆
MaxLoginRetry=4               #最大重试次数
TerminalServerUsers=tsusers          #允许连接的用户组(如果不存在则默认全部用户允许连接)
TerminalServerAdmins=tsadmins  #允许连接的超级用户(如果不存在则默认全部用户允许连接)
[Sessions]
MaxSessions=10                 #最大会话数
KillDisconnected=0            #是否立即关闭断开的连接 (如果为1,则断开连接后会自动注销)
IdleTimeLimit=0                 #空闲会话时间限制(0为没有限制)
DisconnectedTimeLimit=0       #断开连接的存活时间(0为没有限制)
[Logging]
LogFile=./sesman.log         #登陆日志文件
LogLevel=DEBUG               #登陆日志记录等级(级别分别为,core,error,warn,info,debug)
EnableSyslog=0                 #是否开启日志
SyslogLevel=DEBUG          #系统日志记录等级
启动 xrdp
指令:/etc/xrdp/xrdp.sh start
开机启动,编辑 /etc/rc.d/rc.local 加上: /etc/xrdp/xrdp.sh start
登入 xrdp
启动 xrdp 之后,你的 Linux 主机基本上已经具备了接受远程桌面联机的功能,其 Port 为 3389,请用 Windows 的 "远程桌面" 进行联机。
联机后,首先会看到 xrdp 的登入窗口,你可以选择:
sesman-Xvnc:使用 xrdp 内建的 libvnc.so 模块登入本机,本机不需启动 VNC Server;
console:登入本机的 VNC Server;
vnc-any:登入其它已经启动 VNC Server 的主机;
sesman-any:登入其它有安装 xrdp 的主机;
rpd-any:登入其它已经启动远程桌面 (RDP Server) 的 Windows 计算机或主机;
sesman-X11rdp:应该是连结本机端由 X Server 提供的 RDP,但目前 Linux 的桌面应该还没有具备这样的功能;

以 "sesman-Xvnc" 选项登入 Linux 桌面后,预设是使用 KDE 桌面,但其操作接口是英文的,这些设定都与 "/etc/xrdp/startwm.sh" 这个脚本文件有关。如果要改成中文环境,请编辑 /etc/xrdp/startwm.sh,在程序的第二行加入:export LANG=zh_TW.UTF-8,这样就可以了。
远程桌面环境协议对比 特性Xorg (X11)XVNCVNC-any协议类型X11 协议VNC + XorgVNC 协议RDP 协议传输效率高(指令级)中(像素+压缩)低(纯像素)高(指令+压缩)多用户支持需配置(XDMCP)是是通常单会话跨平台性需 X Server依赖 VNC 客户端通用需 RDP 客户端典型用途本地/SSH 开发远程 Linux 桌面简单远程控制企业远程桌面。 阅读详情

相关推荐

Linux下 - Cadence cdsXvnc与Xvnc相关知识与常见问题

Cadence - Cadence Xvnc相关知识与常见问题 文章目录Cadence - Cadence Xvnc相关知识与常见问题前言一、VNC是什么?二、cdsVncserver介绍与VNC相关的文件(夹)位置对比cdsVncserver -vncTenbase三、日常使用中cdsVncserver会遇到什么问题?2.读入数据总结参考资料 前言 Cadence软件有许多grpahics窗口,不需要与用户交互的。这种类型的它会丢到一个VNC里面去,一般情况下这个VNC不被用户所察觉。 cdsVncs

IT基础架构 2574

细说Linux的图形界面系统XServer与VNC及其它

Xserver和vnc的介绍,对远程图形化运维有帮助

曲折旅程,艰难人生 1万+

远程桌面新选择:NoMachine如何取代VNC成为更流畅的Linux远程方案

远程桌面是管理和运维Linux服务器、云主机与边缘设备的重要工具。传统VNC基于RFB协议,将整个屏幕作为位图传输,在弱网条件下容易出现画面卡顿、延迟高、剪贴板单向、文件传输不便等问题。NX协议通过区域识别、分层编码与缓存机制,大幅减少传输数据量,并结合动态带宽自适应和加密通道,让远程操作更流畅、安全。NoMachine作为NX协议的成熟实现,覆盖Ubuntu、Linux Mint、云服务器、ARM开发板等常见场景,同时提供双向剪贴板与内置文件传输功能,有效解决了Linux远程桌面中“VNC不稳定”、“无法

weixin_30846347的博客 317

没有vncserver使用Xvnc启动服务

1、普通用户执行vncpasswd,设置密码,生成.vnc/passwd。 2、Xvnc :1 -desktop dev1:1 -geometry 1024x768 -rfauth /.vnc/passwd & 启动服务。 3、编辑.vnc/xstartup: unset SESSION_MANAGER exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/x...

Gelare的博客 6181

ToDesk vs TeamViewer:Linux远程桌面工具对比与选择指南

本文深入对比了ToDesk和TeamViewer在Linux环境下的远程桌面工具表现,涵盖核心功能、性能实测、安全机制、安装配置及成本分析。ToDesk凭借轻量化和本土化优势在国内网络环境下表现更优,而TeamViewer则以其全球服务网络和企业级功能著称,适合跨国企业。根据实际需求选择合适的工具能显著提升远程工作效率。

weixin_29299807的博客 248

ARM架构Linux远程桌面新选择:NoMachine在Jetson TX1上的性能实测与优化建议

本文针对Jetson TX1开发板的ARM架构特性,实测并优化了NoMachine远程桌面方案。通过对比传统VNC,详细分析了NoMachine在延迟、带宽和资源消耗上的显著优势,并提供了从系统配置、服务端参数到客户端设置的全方位深度优化指南,旨在为边缘计算开发者提供流畅高效的远程开发体验。

weixin_29164843的博客 114

【亲测免费】 探索KasmVNC:Linux Web远程桌面新选择

在远程桌面技术领域,KasmVNC以其独特的特性和先进的技术架构,正逐渐成为开发者和企业用户的新宠。本文将深入介绍KasmVNC的项目背景、技术特点、应用场景及其独特优势,帮助您全面了解这一开源项目。 ## 项目介绍 KasmVNC,全称Kasm Technologies Virtual Network Computing,是一款专为现代浏览器设计的远程桌面解决方案。与传统的VNC实现(如Ti...

gitblog_01032的博客 2917

Linux远程桌面

一、配置 1、阿里云ECS服务器 此处使用的是阿里云高校计划赠送的服务器,只要你是学生或者教师,就有机会跟我一起学习使用服务器哦! 当然也可以进入购买页面来购买ECS服务器 系统:Linux及分支系统,我这里用的是CentOS7_x64做例子 2、SSH控制台 这里有很多种选择,比如 Windows系统自带的的PowerShell、 跨平台的PuTTY、 阿里云自带的云控制台、 3、VNC-Viewer TightVNc 的 VNC_Viewer 的绿色包 用于远程桌面显示的程序 二、操作 1、

weixin_45212301的博客 2160

linux vnc xstartup,vnc 远程桌面选择的配置 xstartup

默认的配置是twm,很简陋!!!主要是桌面的配置vi ~/.vnc/xstartup这个是gnome#!/bin/sh# Uncomment the following two lines for normal desktop:# unset SESSION_MANAGER# exec /etc/X11/xinit/xinitrc[ -x /etc/vnc/xstartup ] &&amp...

weixin_31001739的博客 5711

告别VNC和RDP:为什么我选择NoMachine作为Linux/Win跨平台远程桌面的主力工具?

本文深度评测NoMachine作为跨平台远程桌面工具的卓越性能,特别适合Windows与Ubuntu用户。通过对比NX协议与传统VNC/RDP的技术优势,提供从安装配置到性能调优的完整指南,帮助用户实现高效稳定的远程办公体验。

weixin_33695082的博客 202

24、深入探索Linux远程桌面技术与安全转发

本文深入探讨了Linux系统中常用的远程桌面技术,包括VNC、Xrdp、NX和SPICE协议,详细分析了它们的功能特点、优缺点及适用场景。同时,介绍了SSH端口转发和X11转发等安全技术,帮助用户在远程访问桌面时保障数据传输的安全性。无论是低带宽网络环境、KVM虚拟机连接,还是需要加密传输的场景,本文都提供了实用的技术方案和配置建议。

lambda的博客 114

Linux 远程桌面软件

Linux 操作系统中没有用于远程桌面访问的特定内置解决方案。Linux 远程桌面是一种软件,用于远程访问和控制在 Linux 风格的操作系统上运行的计算机。由于 Linux 是开源的,因此支持此功能的解决方案并不多。强大而全面的 Linux 远程桌面可让您从任何地方访问、控制、监控、故障排除和救援 Linux 计算机或笔记本电脑。

ITmoster的博客 341

Linux远程桌面连接实用指南

本文还有配套的精品资源,点击获取 简介:Linux远程桌面连接工具是一种图形化界面程序,用于在本地设备通过网络操作远程计算机。这种工具相较于SSH提供了更为直观的操作体验。本文介绍了三种Linux远程桌面协议:VNC、RDP和XDMCP,并阐述了它们的特点和适用场景。文中还详细说明了在Linux下设置远程桌面连接的步骤,并对所附的文件进行了说明,强调了在选择远程桌面连接工具...

weixin_33660045的博客 8428

windows远程桌面linux系统,Windows远程桌面控制Linux图文详解

随着互联网的高速发展以及Linux企业应用的成熟,Linux被广泛应用于服务器领域,如何实现Linux的远程管理成为网络管理员的首要任务。我们经常见到的几种最为常用的windows下远程管理Linux服务器的方法,基本上都是利用SecureCRT,F-Secure SSH 抑或是PUTTY等客户端工具通过ssh服务来实现Windows下管理Linux服务器的,这些客户端工具几乎不需要什么配置,使用...

weixin_39599830的博客 315

Java Remote Desktop:跨平台Java远程桌面控制和桌面共享-开源

jrDesktop是跨平台的Java远程桌面控件和桌面共享应用程序,可提供对计算机的远程显示和控制。 它具有许多功能。 它仅适用于LAN,有关Internet就绪版本,请访问www.firnass.com。

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2257

windows自带远程桌面及账户设置,Linux如何远程控制windows

linux下远程控制windows -xfreerdp window远程账户设置 连接的前提是开启windows的远程桌面功能。 账户创建 可以选择使用当前账户或者在新建账户(PS 一台windows PC只可以登录一个账户) 新建账户在控制面板里面新建其他账户即可,选择不使用window账户,创建本地账户 远程桌面功能开启 进入到系统的高级系统设置,最后一个选项卡远程,同时选择允许协助和允许远程控制。 以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。 如何改变文本的样式 强调文本

Rayyyy的博客 1262

免费,Python蓝桥杯等级考试真题--第10级(含答案解析和代码)

Python中蓝桥杯算是含金量和难度最大的比赛之一,网上可以找到不少真题,不过要么零零散散要么付费才能解锁,而且大都是没答案和解析的,给学习者造成很大困扰。因此本文档打算整理历年等级考试、STEMA、省赛、国赛真题卷和解析,供大家学习参考。

1579

linux在没有x远程桌面,xmanager远程桌面控制linux

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)一、在linux端配置1.默认,你安装好系统gdm已经安装,不做解释2.配置gdm(1).修改 /etc/gdm/custom.conf 文件,替换为下面内容[daemon]RemoteGreeter=/usr/libexec/gdmgreeter[security]AllowRemoteRoot=trueDisall...

weixin_42514627的博客 191

信号完整性之阻抗(五)

一、什么是阻抗 阻抗的概念是从高中或者初中大家可能就会接触到,没想它一直陪伴我十年了。在我的印象中,提到阻抗我可能就会想到电阻,这样的思想局限也限制了我平常思考问题。所以今天也想把阻抗这个概念在顺理一遍,有错误或者欠缺的地方希望大家指正。 1.什么是阻抗: ==在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。阻抗常用Z表示,是一个复数,实部称为电阻,虚部称为电抗,其中电容在电路中对交流电所起的阻碍作用称为容抗 ,电感在电路中对交流电所起的阻碍作用称为感抗,电容和电感在电路中对交流电引

刘小同学的博客 2587

智能座舱SoC平台横评:SA8155P、SA8255P、SA8295P、MT8678、MT8628 谁是下代车机首选?

高通SA8295P以PC级架构、强悍AI算力,代表安卓阵营迈向“本地大模型+空间计算”阶段;联发科MT8678则凭借低功耗 + 高带宽,成为副驾多媒体/副屏智能化的性价比之王。在座舱设计中,SoC平台决定了你能给用户什么样的交互方式,选型时切忌只看跑分,而要回归“体验-热设计-平台生态”的三角平衡。

weixin_43199439的博客 3359
上一篇: Windows7 的激活命令小结
下一篇: 由里至外解析System Center
老伊万
博客等级 码龄21年 31粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值