`ssh -Y`(受信任的 X11 转发)和 `ssh -X`(不受信任的 X11 转发)有什么区别?

Mar*_*ing 139 ssh xorg x11-forwarding

ssh -Y(可信 X11 转发)和ssh -X(不可信 X11 转发)有什么区别?据我了解,它与安全性有关,但我没有掌握区别以及何时使用哪个。

qbi*_*qbi 110

这两个选项都与 X11 转发有关。这意味着如果您启用此功能,您可以通过 SSH 会话使用图形客户端(例如,使用 Firefox 或其他东西)。

如果使用ssh -X remotemachine远程机器被视为不受信任的客户端。因此,您的本地客户端向远程计算机发送命令并接收图形输出。如果您的命令违反了某些安全设置,您将收到错误消息。

但是如果你使用ssh -Y remotemachine远程机器,则被视为受信任的客户端。最后一个选项可能会导致安全问题。因为其他图形 (X11) 客户端可以从远程机器嗅探数据(制作屏幕截图、进行键盘记录和其他讨厌的事情),甚至可以更改这些数据。

如果您想了解更多关于这些内容,我建议您阅读Xsecurity 联机帮助页X Security 扩展规范。此外,您可以检查选项ForwardX11ForwardX11Trusted在您的/etc/ssh/ssh_config.

  • ssh 联机帮助页使用了令人遗憾的措辞,暗示(至少对我而言)-X 使用起来不安全,而 -Y 更好。所以谢谢你的回答。 (12认同)
  • 那么为什么一般要使用`-Y`而不是`-X`? (9认同)
  • 回答“为什么使用 -Y 而不是 -X?” 问题,-X 会在超时后放弃转发,而 -Y 不会。不过,您可以使用 ForwardX11Timeout 的 -X 选项覆盖该配置。 (6认同)

小智 32

当您不需要远程运行 X11 程序时,两者都不使用;使用-X时使用;假设-Y您关心的 X11 程序使用 -Y 比使用 -X 效果更好。但是目前(Ubuntu 15.10),-X 与 -Y 相同,除非您编辑ssh_configForwardX11Trusted no. -X 最初的目的是启用 1990 年代的 X 安全扩展,但这是旧的和不灵活的,并且会导致一些程序崩溃,因此默认情况下被忽略。

ssh-Y-X允许您在远程机器上运行 X11 程序,其窗口显示在本地 X 监视器上。问题是该程序可以对其他程序的窗口以及 X 服务器本身执行哪些操作。

local$ ssh -X remote
remote$ xlogo
# Runs xlogo on remote, but the logo pops up on the local screen.
Run Code Online (Sandbox Code Playgroud)

受信任的X11 转发由 启用-Y。这是历史行为。可以访问显示的程序被信任可以访问整个显示。它可以截屏、记录键盘并将输入注入到其他程序的所有窗口中。并且它可以使用所有 X 服务器扩展,包括加速图形之类的扩展,这些都是安全漏洞。这有利于平稳运行,但不利于安全。您相信远程程序与本地程序一样安全。

不受信任的X11 转发试图限制远程程序只能访问它们自己的窗口,并且只能使用 X 中相对安全的那些部分。这听起来不错,但目前在实践中效果不佳。

-X当前的含义取决于您的 ssh 配置。

在Ubuntu 14.04 LTS,除非您编辑ssh_config,有什么区别-X-Y。“[B] 因为目前有太多程序在 [不受信任] 模式下崩溃。”

ubuntu1404$ man ssh
...
 -X      Enables X11 forwarding.  This can also be specified on a per-host
         basis in a configuration file.
         ...
         (Debian-specific: X11 forwarding is not subjected to X11 SECURITY
         extension restrictions by default, because too many programs cur?
         rently crash in this mode.  Set the ForwardX11Trusted option to
         “no” to restore the upstream behavior.  This may change in
         future depending on client-side improvements.)

ubuntu1404$ grep ForwardX11Trusted /etc/ssh/ssh_config
#   ForwardX11Trusted yes
Run Code Online (Sandbox Code Playgroud)

如果ForwardX11Trusted no,则-X启用不受信任的转发。否则,-X被视为相同-Y,相信具有显示访问权限的远程程序是友好的。

  • 这应该是公认的答案,因为它给出了引入选项的历史背景,也因为它不会以“两个选项都与 X11 转发有关”开头。 (3认同)