通过SSH转发X以远程运行程序
1. 概述
安全外壳 (SSH) 是在本地 Linux 系统上运行远程进程的便捷工具。不可避免地,在使用SSH 时,我们需要在本地屏幕上显示来自远程系统的图形界面。X11 端口转发/隧道无缝且安全地促进了这一点。
在本文中,我们将学习如何配置 X11 端口转发。
2. X转发配置
为清楚起见,我们将使用术语服务器和客户端分别指代远程和localLinux 系统。服务器必须能够执行 X 服务器授权才能使 X 转发工作。此外,我们必须在服务器和客户端系统上都启用 X 转发。 让我们看看如何详细执行这些步骤。
2.1. X 服务器授权
我们需要确认 服务器上安装了xauth才能使 X 转发正常工作。xauth 实用程序处理 UNIX 系统上 X 服务器信息的授权。让我们快速检查它是否安装:
$ which xauth
/usr/bin/xauth
幸运的是,大多数标准 Linux 系统都安装了xauth 。在第 3 节中,我们将了解如何在需要时安装它。
2.2. 在服务器上启用 X 转发
要在服务器端启用 X 转发,我们只需在*/etc/ssh/sshd_config * 脚本中添加带有yes参数的*X11Forwarding *关键字:
X11Forwarding yes
2.3. 在本地系统上启用 X 转发
一旦我们在服务器上启用了 X-forwarding,我们现在可以运行带有附加*-X*选项的常用 SSH 命令:
ssh -X itcodingman@blogdemo
现在,我们可以简单地与本地系统中的图形界面进行交互,而它们的进程在远程服务器上运行。 或者,我们可以编写使用*ForwardX11 关键字的显式版本的命令。请注意客户端使用的这个ForwardX11关键字与我们在服务器端使用的X11Forwarding*的区别。
$ ssh -o ForwardX11=yes itcodingman@blogdemo
此外,要将 X 转发设置为我们 SSH 时的默认行为,让我们编辑 SSH 配置文件;~/.ssh/config 文件并将 ForwardX11 关键字添加到文件中:
FowardX11 yes
以上信息是我们在本地 Linux 系统上使用 SSH 显示远程 GUI 所需要的全部信息。
3. 诊断 X 转发错误
在这里,我们确定了一些可用于在运行 X 转发配置时诊断 错误的方法。
3.1.安装xauth
安装xauth很简单,在极少数情况下还没有安装。例如,假设我们的服务器运行 Debian/Ubuntu Linux,我们可以轻松安装xauth:
sudo apt-get install xauth
同样,我们可以在其他 Linux 发行版上使用yum,例如 Fedora:
$ yum search xauth
$ yum install xorg-x11-xauth
3.2. 缺少显示
首先,**让我们弄清楚如何在服务器上设置DISPLAY环境变量。**就上下文而言,我们注意到 Linux 系统可以运行多个显示,这些显示由从 0 开始的整数标记。例如,让我们检查一下已经设置了哪些显示:
$ echo $DISPLAY
:0
在这种情况下,X11 服务器授权设置为使用第一个(由数字 0 表示)本地显示。在远程显示的情况下,我们的客户端系统的 IP 地址将作为冒号的前缀列出:
$ echo $DISPLAY
client:10
但是,我们可以**确保远程显示上使用的 X 服务器不会干扰服务器上的主 X11 显示。*通常,服务器会默认设置这个,但让我们通过在服务器上的/etc/ssh/sshd_config脚本中添加X11DisplayOffset *关键字来实现:
$ X11DisplayOffset 10
另一方面,有时我们可能希望将所有显示器设置为远程使用。我们在服务器上通过简单地将X11UseLocalhost关键字添加到*/etc/ssh/sshd_config*并不带参数来执行此操作:
X11UseLocalhost no
可以在此处找到有关此错误和相关错误 的更多信息