问题描述
ssh -Y
(可信X11转发)和ssh -X
(不可信X11转发)有什么区别?据我了解,它与安全有关,但我没有掌握区别以及何时使用它。
最佳解决方法
这两个选项都与X11转发有关。这意味着如果启用此功能,则可以通过SSH会话使用图形客户端(即使用Firefox或其他)。
如果您使用ssh -X remotemachine
,则远程计算机将被视为不可信的客户端。所以你的本地客户端发送一个命令到远程机器并接收图形输出。如果您的命令违反了某些安全设置,您将会收到错误信息。
但是如果您使用ssh -Y remotemachine
,则远程计算机将被视为可信客户端。最后一个选项可能会打开安全问题。因为其他图形(X11)客户端可以从远程机器嗅探数据(制作截图,做键盘记录和其他讨厌的东西),甚至可以改变这些数据。
如果您想了解更多关于这些内容的信息,建议您阅读Xsecurity manpage或X Security extension spec。此外,您可以检查/etc/ssh/ssh_config
中的选项ForwardX11
和ForwardX11Trusted
。
次佳解决方法
当您不需要远程运行X11程序时,不要使用;使用时请使用-X
;如果您关心的X11程序与-Y比使用-X更好,则假设使用-Y
。但是目前(Ubuntu 15.10),-X与-Y完全相同,除非编辑ssh_config
来表示ForwardX11Trusted no
。 -X原本打算启用20世纪90年代的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.
受信任的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
如果ForwardX11Trusted no
,则-X
启用不可信转发。否则,-X
与-Y
的处理方式相同,相信具有显示访问权限的远程程序是友好的。
第三种解决方法
是。 -Y用于信任的X11转发,而-X用于不可信的X11转发。 X11转发只允许您在SSH会话中使用X11(即图形)应用程序。
我不确定受信任和不受信任的X11连接之间有什么有意义的区别,但我确定它与server-side配置(即ssh-config,sshd-config等)有关。请向您的服务器或网络管理员确认要使用哪个标志。