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


114

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

Answers:


89

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

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

但是,如果使用ssh -Y remotemachine远程计算机,则将其视为受信任的客户端。最后一个选项可能会打开安全性问题。因为其他图形(X11)客户端可能会嗅探远程计算机上的数据(进行屏幕截图,进行键盘记录和其他讨厌的事情),甚至有可能更改这些数据。

如果您想进一步了解这些内容,建议阅读Xsecurity联机帮助页X Security扩展规范。此外,您可以在ForwardX11ForwardX11Trusted中检查选项/etc/ssh/ssh_config


6
ssh联机帮助页使用了不幸的措辞,这(至少对我来说)表明-X是不安全的,而-Y是更好的。因此,谢谢您的回答。
Torsten Bronger 2014年

因此,-X其他客户端无法嗅探或更改数据吗?
musiphil 2014年

6
那么,为什么要使用-Y而不是-X一般呢?
2016年

我有一个相同的问题(为什么要使用-Y),并且我理解这可能有用的唯一情况是服务器端的安全控制由于某种原因未实现/不兼容。我还读到转发X11通常是一个功能强大且危险的工具,应该这样对待。
MakisH

5
回答“为什么使用-Y而不是-X?” 问题,-X在超时后丢弃转发,而-Y没有。不过,您可以使用ForwardX11Timeout的-X选项覆盖该配置。
勒布

23

当您不需要远程运行X11程序时,不要使用任何一种。使用-X时使用;并假设-Y如果您关心的X11程序在-Y下比在-X下运行更好。但目前(Ubuntu 15.10),-X与-Y相同,除非您编辑ssh_configForwardX11Trusted no。-X最初旨在启用1990年代的X Security扩展,但是它既旧又不灵活,并且使某些程序崩溃,因此默认情况下将其忽略。

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

local$ ssh -X remote
remote$ xlogo
# Runs xlogo on remote, but the logo pops up on the local screen.

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

不可信的 X11转发试图将远程程序限制为仅访问自己窗口,并且仅使用相对安全的X部分。听起来不错,但目前在实践中效果不佳。

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

在Ubuntu 14.04 LTS上,除非您进行编辑,否则和ssh_config之间没有区别。“ [B]因为当前有太多程序在[不受信任]模式下崩溃。”-X-Y

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

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


1

-X选项启用X11转发:

-X   Enables X11 forwarding.  This can also be specified on a per-host
     basis in a configuration file.

     X11 forwarding should be enabled with caution.  Users with the
     ability to bypass file permissions on the remote host (for the
     user's X authorization database) can access the local X11 display
     through the forwarded connection.  An attacker may then be able
     to perform activities such as keystroke monitoring.

     For this reason, X11 forwarding is subjected to X11 SECURITY
     extension restrictions by default.  Please refer to the ssh -Y
     option and the ForwardX11Trusted directive in ssh_config(5) for
     more information.

该选项-Y与ssh_config(5)中的ForwardX11Trusted伪指令相对应,它的安全性甚至更低,因为它删除了X11 SECURITY扩展控件。

-Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not
        subjected to the X11 SECURITY extension controls.

使用起来更安全 -x

-x   Disables X11 forwarding.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.