深圳广东网站建设套餐,电子商城网站,中小企业网络拓扑图绘制,商标设计免费更多奇技淫巧欢迎订阅博客#xff1a;https://fuckcloudnative.io前言在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, SecureCRT 通过 X11 实现 Linux 图形化界面显示#xff0c;我的需求是在 macOS 下使用 iTerm2 作为 Terminal 实现 X11 图形化界面显示… 更多奇技淫巧欢迎订阅博客https://fuckcloudnative.io前言在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, SecureCRT 通过 X11 实现 Linux 图形化界面显示我的需求是在 macOS 下使用 iTerm2 作为 Terminal 实现 X11 图形化界面显示网上大部分教程只提到安装 Xquartz 但并没有结合实际问题给出完整的解决步骤我把实践过程做了详细的记录方便大家按照最简单的步骤实现 Linux 图形化显示效果。1. X11 介绍有些 Linux 服务器出于性能和效率的考虑通常都是没有安装图形化界面的那么图形化程序在服务器上压根儿就跑不起来或者无法直接显示出来这就很尴尬了那么如何解决这个问题呢可以基于 X11 Forwarding 技术 MobaXterm/Xshell/SecureCRT/XQuartz 等第三方工具就可以轻松搞定是不是很简单X 协议Linux 本身是没有图形化界面的所谓的图形化界面系统只不过中 Linux 下的应用程序。这一点和 Windows 不一样。Windows 从 Windows 95 开始图形界面就直接在系统内核中实现了是操作系统不可或缺的一部分。Linux 的图形化界面底层都是基于 X 协议。X 协议由 X server 和 X client 组成X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等)它负责屏幕画面的绘制与显示以及将输入设置(如键盘、鼠标)的动作告知 X client。X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。举个例子如果用户点击了鼠标左键因为鼠标归 X server 管理于是 X server 就捕捉到了鼠标点击这个动作然后它将这个动作告诉 X client因为 X client 负责程序逻辑于是 X client 就根据程序预先设定的逻辑(例如画一个圆)告诉 X server 说“请在鼠标点击的位置画一个圆”。最后X server 就响应 X client 的请求在鼠标点击的位置绘制并显示出一个圆。X11 Forwarding这么绕有啥意义呢当然有许多时候 X server 和 X client 在同一台主机上这看起来没什么。但是 X server 和 X client 完全可以运行在不同的机器上只要彼此通过 X 协议通信即可。于是我们就可以做一些 “神奇” 的事情比如像本文开头谈到的在本地显示 (X server)运行在服务器上的 GUI 程序 (X client)。这样的操作可以通过 SSH X11 Forwarding (转发) 来实现。X11 中的 X 指的就是 X 协议11 指的是采用 X 协议的第 11 个版本。2. macOS 实现 X11 图形化界面显示# macOS 安装 xquartzbrew cask install xquartz# 启动 xquartz实测 Allow connections from clients 选项非必须条件Run Applications Utilities XQuartz.app# 设置 DISPLAY 环境变量export DISPLAY:0# 没有使用 xquartz 中 terminal 的话不会自动设置 DISPLAY 环境变量可能会出现以下错误[rootVM-2-11-centos ~]# firefoxFailed to open connection to session message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11Running without a11y support!Error: no DISPLAY environment variable specified# ssh 添加 - Y flag 登录远程主机ssh -Y userhost# 登录成功后可能出现以下错误安装 xauth 即可解决ssh -Y root192.168.117.148X11 forwarding request failed on channel 0# 远程主机安装 xauth以 centos 为例使用 xclock 可以测试图形化效果yum install -y xauth xclockxclock# 如果需要浏览器支持安装 firefox 或者 chrome 即可yum install firefoxfirefoxyum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm/usr/bin/google-chrome-stable %U --no-sandbox3. FAQWhy do I need to install Xquartz?From https://stackoverflow.com/a/50182736/6769366XQuartz is standard. It used to come bundled with the OS, but Apple removed it back around Mavericks.Why do I have to add environment DISPLAY?Please see https://askubuntu.com/a/432257/745885[1]Why do I have to use -Y instead of -X?I got the following error when trying to run a python script which draws some curves using matplotlib:X Error of failed request: BadAccess (attempt to access private resource denied)Major opcode of failed request: 18 (X_ChangeProperty)Serial number of failed request: 12Current serial number in output stream: 15This problem is sovled when using -Y instead of -X. Haven’t got enough time to find exact explanation, just post a link for those who are curious:Can’t run “ssh -X” on MacOS Sierra[2]How to fix X11 forwarding request failed on channel 0?Install X authority file utility$ sudo yum install xauth参考资料[1]https://askubuntu.com/a/432257/745885: https://askubuntu.com/a/432257/745885[2]Can’t run “ssh -X” on MacOS Sierra: https://stackoverflow.com/q/39622173/6769366原文链接https://wsgzao.github.io/post/x11/你可能还喜欢点击下方图片即可阅读在 k8s 中使用 Kubevirt 运行管理 Windows 10 操作系统云原生是一种信仰 ?扫码关注公众号后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具只需一条命令连 ssh 都不需要点击❤️给个「在看」是对我最大的支持❤️