今天,我们将学习一个鲜为人知、有趣且有用的 Linux 特性。 我相信你们中的大多数人都知道 SSH。 我们可以通过 SSH 安全地访问远程 Linux 系统。 但是,您是否知道可以通过 SSH 转发 X 以远程运行图形应用程序? 是的! 这种机制被称为 X11转发. 在本指南中,我们将在 Linux 中使用 SSH 配置 X11 转发。
什么是X11转发?
X11 转发是允许用户启动安装在远程 Linux 系统上的图形应用程序并将该应用程序窗口(屏幕)转发到本地系统的方法。 远程系统不需要有 X 服务器或图形桌面环境。 因此,使用 SSH 配置 X11 转发使用户能够通过 SSH 会话安全地运行图形应用程序。
用通俗的话来说,
- 我们通过 SSH 连接到远程系统,
- 然后我们从那个 SSH 会话启动一个 GUI 应用程序(安装在远程系统中),
- 现在,GUI 应用程序在远程系统上运行,但应用程序窗口出现在我们的本地系统上。 所以我们可以在本地系统上使用这个远程 GUI 程序,就像我们使用本地安装的程序一样。
清除? 现在让我们继续看看如何通过 SSH 会话运行远程 GUI 应用程序。
在 Linux 中使用 SSH 配置 X11 转发
出于本指南的目的,我将使用以下两个系统:
- 远程服务器 – CentOS 8 最小服务器(无 GUI)。
- 本地系统 – 带有 Gnome DE 的 Ubuntu 20.04 LTS。
配置 X11 转发很简单。
确保你已经安装 “xauth” 在您的远程服务器系统上。 如果未安装,请以 root 身份运行以下命令或 sudo 用户:
# dnf install xorg-x11-xauth
转到您的远程系统(在我的情况下是 CentOS 8)并编辑 “/etc/ssh/sshd_config” 使用您喜欢的编辑器创建文件:
# vi /etc/ssh/sshd_config
添加/修改以下行:
[...] X11Forwarding yes
按 退出 键和类型 :wq 保存和 close 文件。
重新启动 sshd 服务以使更改生效:
# systemctl restart sshd
完毕! 我们已经配置了 X11 转发。
现在转到您的客户端系统(在我的情况下,它是 Ubuntu 20.04)并使用以下命令通过 SSH 访问远程服务器:
$ ssh -X [email protected]
这里, -X 选项用于通过 SSH 启用 X11 转发。 代替 ”[email protected]” 使用远程服务器的用户名和 IP 地址。
您将在第一时间看到以下警告消息。
/usr/bin/xauth: file /root/.Xauthority does not exist
但是,那 .Xauthority
文件应该在第一次登录时自动生成,因此后续登录应该没问题。
接下来,从此 SSH 会话启动任何 GUI 应用程序。 我已经在 CentOS 8 服务器中安装了 Gedit 图形文本编辑器,因此我将使用以下命令启动它:
# gedit
gedit GUI 窗口屏幕现在将出现在您的本地系统中。