Linux使用远程X Server显示图形

背景

通常我们不希望在服务器上安装图形界面,但有时候有些程序需要图形界面,比如安装oracle的时候。此时,可以配置让Linux使用远程的X Server进行图形界面显示。

首先要明确的是Linux X Window System的基本原理,X是一个开放的协议规范,当前版本为11,俗称X11。X Window System由客户端和服务端组成,服务端X Server负责图形显示,而客户端库X Client根据系统设置的DISPLAY环境变量,将图形显示请求发送给相应的X Server。
 
因此,我们只需要在远端开启一个X Server,并在目标机器上相应的设置DISPLAY变量,即可完成图形的远程显示。
 
“真理体验”版

环境:远程无图形机器A(IP 192.168.9.135,OS CentOS 6.2),本地有图形机器B(IP 192.168.1.135,OS CentOS 6.2),子网192.168.0.0

X Server是Gnome等桌面环境的基础,一个桌面环境通常包含了XDM(X Display Manager,通常的图形化用户登录界面就属于XDM)、窗口管理器(X Server显示的图形是没有“窗口”边框的,通过替换窗口管理器可以实现不同的视觉效果,比如实现3D效果的Compiz)等组件。
 
进行图形显示并不需要桌面环境,只要有X Server即可。
 
现在要在B机器上开启一个X Server,然后配置A机器的DISPLAY环境变量指向B上面的X Server,在A上启动一个图形程序,图形应该在B上面进行显示。
 
Linux提供了一个startx脚本来启动X Server,startx脚本通过调用xinit来完成此工作。xinit完成两个工作,首先在后台启动一个X Server,然后根据配置启动一系列客户端程序连接到X Server,这些客户端程序只有最后一个可以并且必须在前台运行,当这个前台的客户端程序退出时X Server将被关闭。
 
B机器上有桌面环境,查看进程可以看到如下进程在运行:
/usr/bin/Xorg :0 -nr -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-Ikd3i7/database -nolisten tcp vt1
这表示在display 0上运行着一个X Server,这里的X Server是Xorg。出于安全考虑,这个X Server不监听TCP连接(-nolisten tcp),所以无法通过网络连接上这个X Server。X Server可以通过TCP和域套接字进行连接,后面讲述DISPLAY变量时会详细描述。
 
我们可以通过startx或直接使用xinit来手动启动一个X Server,startx的选项与xinit相同,选项直接传递给xinit。xinit选项分为两个部分,以符号 “--”为界,前面是客户端选项,后面是X Server选项。
startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]
要注意的是“client”(即要运行的客户端程序)必须以绝对路径的形式出现。如果不指定“client”,startx或xinit会根据用户和系统全局的配置文件启动一个客户端程序(一般xinit默认启动xterm程序)。
 
现在我们启动一个X Server:
xinit /usr/bin/xterm -- :1 &
这个命令可以在桌面环境下的终端里面运行,也可以在字符终端下运行。机器B上的桌面环境显示在终端Ctrl-Alt-F1上,F2-F6都是字符终端,F7-F12留给图形终端。在B机器的F2字符终端上执行以上命令,将在F7终端出现xterm。
 
接下来要配置A机器的DISPLAY变量,以便将图形显示到B机器上。以另一终端登录A机器,设置DISPLAY变量:
export DISPLAY=192.168.1.135:1.0
DISPLAY变量的格式为[Address]:{NumA}.{NumB}。其中Address为X Server地址,如果Address为空,则通过域套接字连接到本地的X Server。NumA为display number,这与传递给xinit的display选项对应,这个display number为X Server的监听端口号送去6000。因此,实际上此时B机器上的X Server在监听6001端口,可以使用netstat命令验证。NumB为screen number(可能是多显示器的情况下指定显示在哪个显示器,未验证),通常情况下都为0.
 
现在关闭B机器的防火墙(或者打开相应端口),以便A机器的X客户端程序可以连接上B机器上的X Server。然后在A机器上刚才设置DISPLAY变量的那个会话中,启动一个带有图形界面的程序,图形将会显示在B机器的F7终端上。
 
如果提示无法连接到DISPLAY指定的X Server,可能是由于X Server打开了访问控制。在A机器上已设置DISPLAY变量的会话中使用xhost命令查看授权信息:
xhost
如果显示无法打开display,则可以确定是因为X Server开启了访问控制。
 
在B机器F7终端由xinit打开的xterm中使用xhost授权A机器访问:
xhost + 192.168.9.135
 
然后在B机器F7终端xterm上使用xhost命令查看ACL,可以看到192.168.9.135已获得授权。此时,在A机器已设置DISPLAY的会话中运行xhost,同样可以看到ACL,再运行图形程序,图形应显示在B机器F7终端上。
 
SSH隧道转发版

SSH提供了X11转发的功能,可以使用SSH简单地实现上一节描述的功能。

首先确认A机器上的SSH Server打开的X11转发功能。检查SSH Server配置文件/etc/ssh/sshd_config,确认有如下配置:
X11Forwarding yes
然后在从B机器上SSH到A机器:
ssh -X 192.168.9.135
-X选项打开SSH的X11转发功能。
 
在此会话中查看A机器上的DISPLAY变量,应与下面类似:
localhost:10.0
在此会话中查看A机器上的TCP监听端口,应有6010端口。
 
在此会话中启动A机器上的图形程序,图形应显示在B机器上。
 
实际上,SSH在A机器上打开了一个监听端口6010,并且在登录会话开始时为会话设置了DISPLAY变量为localhost:10.0。随后此会话中的图形程序运行时,X11 client库会将X请求发送到SSH监听6010端口中,然后A机器上的SSH将X请求转发到B机器,B机器的SSH客户端收到X请求后交给B机器上的X Server显示。
 
SSH隧道转发Windows版
 
原理与上一节类似,X请求由SSH转发,只不过图形在Windows上显示。
 
首先在Windows上安装并运行一个X Server,这里选用Xming。然后使用ssh客户端连接上机器A,这里选用SecureCRT作为ssh客户端(使用putty同样可以)。
 
SecureCRT的会话选项作如下 设置:
 实际上这里对SecureCRT的设置与上一节中ssh -X选项相同。
 
如果已经登录机器A,注销再重新登录。查看DISPLAY变量:
 
启动一个图形程序,界面将在Windows上显示:
 
 
小结
通过上述的几个小实验,应该对X11的基本原理有了比较清晰的理解,以后遇到某些软件必须使用图形界面的时候,可以在Windows上使用Xming来进行远程图形显示,不必为此在服务器上安装臃肿的图形环境了。
 

转载于:https://www.cnblogs.com/hellogc/p/3219902.html

油猴脚本实战:5分钟搞定网页按钮自动点击(附某某网盘倍速破解代码) 本文通过实战案例,详细介绍了如何使用油猴脚本实现网页按钮的自动点击功能。文章以模拟点击为核心,手把手教你编写一个能自动选择某某网盘视频1.5倍速播放的脚本,涵盖脚本原理、代码实现、安装调试及安全使用边界,助你5分钟内提升网页操作效率。 阅读详情

相关推荐

告别虚拟机!在WSL2的Ubuntu里,5分钟搞定LVGL v9.2图形界面模拟开发环境

本文详细介绍了如何在WSL2的Ubuntu环境中快速搭建LVGL v9.2图形界面开发环境,提供了一种轻量级替代虚拟机的解决方案。通过5分钟配置指南,开发者可以高效完成嵌入式UI开发环境的搭建,并利用WSL2的接近原生性能和VSCode深度集成提升开发效率。

weixin_30823001的博客 226

Linux的XServer

linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的: 图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统linux和Xfree的关系就相当于当年的DOS和WINDOWS 3.0 一样, windows 3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是 linux下的一个应用程序而已。 不是系统的一部分,但是X的存在可以方便用户使用电脑。WINDOWS 95.....

啊渊的专栏 7548

机器人端的图形界面ssh远程显示方案

最近在做机器人平台调试的时候,我们一般通过ssh的方式远程登陆机器人端的小电脑进行开发,比如有时候我们需要打开rviz进行一些话题消息的可视化,所以这时候就需要远程打开某些图形软件了,我们可以通过X11服务实现。

linzs.online 1万+

X server

X serverLinux系统里面图形接口服务器的简称。Windows系统的界面是这个系统不可分割的一部分,各种窗口操作界面显示都是由系统核心直接管理的,而Linux图形界面并不是系统的必要组成部分,它可以在无界面的条件下运行。当需要Linux提供界面的时候,系统就会建立一个或者数个X server,通过X协议跟窗口管理器交互,由独立于系统的应用程序来产生窗口,状态栏,按钮之类的交互界面。 ...

ARM-Linux 1万+

62、Linux X Server 配置、启动、停止及远程显示全攻略

本文详细介绍了在Linux服务器上配置、启动和停止X服务器的方法,并探讨了如何实现远程显示以及通过SSH隧道传输X。内容涵盖了X服务器的三种配置方法、X服务器的启动与停止方式、远程显示设置、SSH安全连接操作以及常见问题的解决方案。通过这些步骤和最佳实践建议,用户可以高效、安全地运行基于GUI的应用程序。

tgb345678的博客 354

快速理解 X server, DISPLAY 与 X11 Forwarding

快速理解 X server, DISPLAY 与 X11 Forwarding

weixin_41973774的博客 3万+

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

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

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

Linux下用ssh在远程Xserver显示图形界面

运行环境: 虚拟机:VirtualBox Linux发行版:Lubuntu14.04 Xserver机器A的IP:192.168.56.101 Xclient机器B的IP:192.168.56.103 前提要求: 两台机器要能ping通,都安装了ssh并且能够连上 问题: 在用机器A通过ssh连接机器B时出现ssh: connect to host 192.168.56.103 port...

Chancer224的博客 1564

linux服务器 远程桌面,Linux 远程桌面的两种方式

在绝多数情况下,Linux 不需要使用到GUI的桌面环境,但是有时在一些特殊的场景如安装Oracle的时候,需要有图形界面进行辅助才可以安装。如果要使用Linux图形界面,一般有两种方式:1、Linux系统安装X Windows图形界面,使用vnc远程。2、Linux系统启用X协议,配置X Clent,本地有桌面环境的机器(如Windows)配置X Server,获取远程的信息,在本地X ser...

weixin_42101164的博客 4561

linux ssh远程打开图片,经过SSH -q -X来远程打开链接显示图形界面

如下以qtcreator 为例以Ubuntu 16.04.4 LTS为例。安装配置主要分为服务器端和客户端两个方面。web1、服务器端配置安装ssh服务sudo apt-get install openssh-server#(apt-get是ubuntu系统的命令。CentOS系统使用yum -y install openssh-server,下面雷同)2.修改配置文件,实现支持X转发a.编辑ss...

weixin_35394437的博客 1361

mysql的typical,安装数据库Typical path for xclock: /usr/X11R6/bin/xclock 错误问题

[oracle@localhost database]$ ./runInstallerStarting Oracle Universal Installer...Checking Temp space: must be greater than 120 MB. Actual 2847 MB PassedChecking swap space: must be greater than 150 MB...

weixin_29457191的博客 694

RHEL5.8使用yum安装X Window System

硬件配置:4C+16GB 操作系统:Red Hat Enterprise Linux Server release 5.8 (Tikanga) 服务器中使用的是RHEL5.8操作系统,只安装了基本的功能并未安装图形相关的组件。当需要使用图形界面时就需要手动安装”X Window System”。 问题现状: 使用xshell连接服务器,敲入xclock时无法将图形显示至本地。 问题解决: ...

weixin_30377461的博客 409

LVGL模拟器+Linux+VsCode连接虚拟机开发环境配置

LVGL模拟器源码Linux SDL2驱动(用于显示lvgl运行的窗口)编译器,一般Linux都有。

WLun_的博客 822

xming工具的简单实用说明

下面简单介绍一下可以代替x windows工具的图形化界面工具xming1. 下载:http://www.straightrunning.com/candidate/Xming-7-5-0-30-setup.exe 2....

1253

告别黑窗口!手把手教你用Xming给WSL2装个轻量级桌面(附防火墙避坑指南)

本文详细介绍了如何使用Xming为WSL2配置轻量级可视化桌面环境,特别针对零基础用户提供从安装到防火墙配置的完整指南。通过X11协议转发图形界面,开发者可以无缝运行Linux图形应用,如GIMP、LibreOffice等,显著提升开发效率。文章还包含防火墙避坑技巧和常见错误排查方法,帮助用户快速搭建稳定的WSL图形化工作环境。

weixin_30613343的博客 587

Linux远程X Server显示图形界面

背景 大多数时候我们不希望在服务器上安装图形界面,但有时候有些程序需要图形界面,比如安装Oracle的时候。此时,可以配置让Linux使用远程的X Server进行图形界面显示。 首先要明确的是Linux X Window System的基本原理,X是一个开放的协议规范,当前版本为11,俗称X11。X Window System由客户端和服务端组成,服务端X Server负责图形显示,而客户端库X Client根据系统设置的DISPLAY环境变量,将图形显示请求发送给相应的X Server。 因此,我

望月天园 2253

linux下的图形界面X server

linux下的图形界面X server 1.Linux本身没有图形界面 linux现在的图形界面的实现只是linux下的应用程序实现的,图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统。同样X server只是 linux下的一个应用程序而已,不是系统的一部分。WINDOWS 95及以后的版本他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows 了,但linux却不一样,没有图形界面linux还是linux,很多装lin

str125757855的博客 2206
上一篇: 导入Excel 时间格式验证
下一篇: 如何使用 Pylint 来规范 Python 代码风格
weixin_30719711
博客等级 码龄11年 136粉丝 1396原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值