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

news/2024/11/25 15:04:53/

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/news/1549846.html

相关文章

01.Golang 源码目录结构

Golang 源码目录结构 目录总览 ├── README.md #说明文件 ├── SECURITY.md #安全政策 ├── api #Golang每个版本的功能列表归档文件 ├── doc #Golang文档说明,和官方文档相同,可以离线查看 ├── lib #像是库文档模板,里面列举了…

mysql-分析并解决可重复读隔离级别发生的删除幻读问题

在 MySQL 的 InnoDB 存储引擎中,快照读和当前读的行为会影响事务的一致性。让我们详细分析一下隔离级别味可重复读的情况下如何解决删除带来的幻读。 场景描述 假设有一个表 orders,其中包含以下数据: 事务 A 执行快照读 START TRANSACTION…

docker-compose 安装 pgsql (postgres)

docker-compose-pg.yml 文件内容 version: 3 services:iepms-gateway:image: postgres:14.13container_name: postgresql-14.13restart: alwaysprivileged: trueenvironment:- POSTGRES_PASSWORD: test2024ports:- 15432:5432volumes:- /home/iepms/data/pgsql/data:/var/lib/…

(笔记,自己可见_1)简单了解ZYNQ

1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…

前端知识点---箭头函数(javascript)

文章目录 箭头函数(javascript)箭头函数省略小括号省略大括号箭头函数与没有argumentsthis的指向问题 箭头函数(javascript) 箭头函数 引子: <input type"text" id"txt1" ><input type"button" id"btn" value"测试&…

Leetcode打卡:最小区间

执行结果&#xff1a;通过 题目&#xff1a;632 最小区间 你有 k 个 非递减排列 的整数列表。找到一个 最小 区间&#xff0c;使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a < d-c 或者在 b-a d-c 时 a < c&#xff0c;则区间 [a,b] 比 [c,d] …

cocos creator 3.8 打飞机Demo 9

简单的demo实现&#xff0c;没优化以及加上音频文件&#xff0c;没有开始结束暂停等逻辑。 首先2D状态下&#xff0c;接受的素材 1、首先实现背景的移动 基本逻辑如下 关于fixUpdate&#xff0c;可以写一个基类&#xff0c;然后继承它 //固定帧计时private _now_time 0;//固定…

RHCE——DNS域名解析服务器

1、DNS简介 DNS是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式 数据库&#xff0c;能够使人更方便的访问互联网。 &#xff08;1&#xff09;因特网的域名结构 因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在 因特网上的主机或路…