如何在 Ubuntu 上设置 SSH X11 转发并访问远程图形界面

embedded/2024/11/22 5:37:13/

1. 前言

当我们在远程服务器上运行需要图形界面的程序时,通常需要使用 SSH 来连接服务器并通过 X11 转发将远程的图形界面显示到本地机器。本文将详细介绍如何使用 SSH 命令和相关的配置,来通过 X11 转发在 Ubuntu 上远程访问服务器的图形界面。

2. SSH X11 转发概述

X11 是一个用于网络透明的图形用户界面协议。它允许你通过网络将一个图形应用的窗口从远程主机显示到本地。为了实现这一目标,SSH 提供了 X11 转发功能。我们可以通过 ssh -Xssh -Y 命令启用这一功能。

2.1 为什么选择 -X-Y

  • -X:启用 X11 转发,但不允许不受信的 X11 转发。
  • -Y:启用 X11 转发,并允许不受信的 X11 转发(适用于一些复杂的图形应用)。

3. 操作步骤

3.1 生成和使用密钥文件

首先,我们需要通过 SSH 密钥连接到远程服务器。你提到你已经有了一个密钥文件 /home/tangyipeng/.ssh/hzrobotembodiedAI.pem,确保密钥文件权限正确,执行以下命令:

chmod 600 /home/tangyipeng/.ssh/hzrobotembodiedAI.pem

3.2 连接到远程服务器并启用 X11 转发

你可以通过以下命令连接到远程服务器,并启用 X11 转发:

ssh -X -i /home/tangyipeng/.ssh/hzrobotembodiedAI.pem root@36.134.9.205

命令解析

  • -X:启用 X11 转发。
  • -i /home/tangyipeng/.ssh/hzrobotembodiedAI.pem:指定 SSH 私钥文件,避免使用密码登录。
  • root@36.134.9.205:远程服务器的 IP 地址和用户名(此处使用的是 root 用户)。

3.3 测试 X11 转发是否成功

连接成功后,执行以下命令以测试 X11 转发是否配置正确:

xclock

如果看到一个时钟窗口弹出,表示 X11 转发配置成功。此时,远程的图形界面应该能够在本地显示。

3.4 设置 DISPLAY 环境变量

如果你在连接后没有看到图形界面,可能是因为 DISPLAY 环境变量没有设置。你可以手动设置它:

export DISPLAY=:0

或者,如果你使用的是 Xvfb 虚拟显示环境:

export DISPLAY=:99

这将确保远程图形应用通过正确的显示服务器渲染。

3.5 使用虚拟显示 Xvfb

如果你没有物理显示器或者希望以无头模式运行图形应用,可以使用 Xvfb 启动一个虚拟显示服务器:

sudo apt install xvfb
Xvfb :99 -screen 0 1280x1024x24 &
export DISPLAY=:99

这将启动一个虚拟显示,设置 DISPLAY 环境变量为 :99,并使所有的图形应用通过虚拟显示渲染。

4. 常见问题及解决方案

4.1 GLFW 初始化失败错误

如果你遇到如下错误:

[Error] [carb.windowing-glfw.plugin] GLFW initialization failed.
[Error] [carb.windowing-glfw.plugin] GLFW window creation failed!
[Error] [carb.gym.plugin] Failed to create Window in CreateGymViewerInternal

这种错误通常是由于没有合适的图形环境配置。可以尝试以下步骤:

  1. 使用 Xvfb 启动虚拟显示(如上所述)。
  2. 检查是否安装必要的图形库
sudo apt install libgl1-mesa-glx
  1. 确保 DISPLAY 环境变量正确设置

4.2 远程应用没有图形界面显示

如果应用没有图形界面显示,可以尝试以下排查步骤:

  1. 确认 ssh -Xssh -Y 参数是否正确。
  2. 在本地安装 X11 相关的依赖:
sudo apt install xauth xorg openbox
  1. 检查远程服务器上的 X11 配置。确保 /etc/ssh/sshd_config 文件中的 X11Forwarding 设置为 yes
X11Forwarding yes
X11UseLocalhost no

然后重启 SSH 服务:

sudo systemctl restart ssh

5. 总结

通过 SSH X11 转发,你可以轻松地访问远程服务器上的图形应用并在本地显示。以下是本教程的关键步骤和命令:

  • ssh -X -i /home/tangyipeng/.ssh/hzrobotembodiedAI.pem root@36.134.9.205:连接到远程服务器并启用 X11 转发。
  • export DISPLAY=:99:确保远程图形应用通过虚拟显示渲染。
  • xclock:测试 X11 转发是否成功。

在出现问题时,可以使用 Xvfb 启动虚拟显示,或检查环境变量、图形库等配置。希望本文对你在远程使用图形应用的工作中有所帮助!


http://www.ppmy.cn/embedded/139535.html

相关文章

Bokeh实现大规模数据可视化的最佳实践

目录 引言 一、Bokeh简介 二、安装Bokeh 三、数据准备 四、性能优化 五、创建图表 六、添加交互功能 七、应用案例 八、高级技巧 九、总结 引言 在数据科学领域,数据可视化是一个至关重要的环节。通过可视化,我们可以直观地理解数据的特征和趋…

springboot中设计基于Redisson的分布式锁注解

如何使用AOP设计一个分布式锁注解&#xff1f; 1、在pom.xml中配置依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.3.26</version></dependency><dependenc…

什么是Git,有什么特点

版本控制工具Git简介 一、Git的由来 Git 是一种分布式版本控制系统&#xff0c;由 Linux 之父 Linus Torvalds 于 2005 年创建。当时&#xff0c;Linux 内核开发团队需要一个高效的版本控制系统来管理庞大的代码库。在此之前&#xff0c;他们使用的是 BitKeeper&#xff0c;这…

【第二十一周】网络爬虫实践

目录 摘要Abstract案例&#xff1a;使用 Python 抓取微博评论数据一、数据来源分析1.明确需求2.抓包分析 二、代码实现步骤1.发送请求2.获取数据3.解析数据4.保存数据5.批量采集数据6.封装函数 总结 摘要 本周主要完成了陶博的大语言课程中布置的一个爬虫实践任务&#xff0c;…

Java算法OJ(7)随机快速排序

目录 1.前言 2.正文 1. 快速排序的基本原理 2. 随机快速排序的改进 3. 随机快速排序的步骤 3.小结 1.前言 哈喽大家好吖&#xff0c;今儿给大家带来算法—随机快速排序相关知识点&#xff0c;废话不多说让我们开始。 2.正文 在了解随机快排之前&#xff0c;先了解一下…

跨平台WPF框架Avalonia教程 八

构建跨平台应用程序 本指南介绍了Avalonia&#xff0c;并概述了如何构建跨平台应用程序&#xff0c;以最大程度地重用代码&#xff0c;并在所有主要平台&#xff08;Windows、Linux、macOS、iOS、Android和WebAssembly&#xff09;上提供高质量的用户界面体验。 与Xamarin.Fo…

【贪心算法】贪心算法四

贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.最长回文串 题目链接&…

SpringMVC域对象共享数据

目录 一.向 request 域对象共享数据 1.1使用ServletAPI向request域对象共享数据 1.2使用ModelAndView向request域对象共享数据 1.3使用Model向request域对象共享数据 1.4使用map向request域对象共享数据 1.5使用ModelMap向request域对象共享数据 二.Model、ModelMap、Ma…