如果服务器配置不允许,则通过SSH转发X11


10

考虑一种情况,我正在通过SSH从机器A登录到机器B,在机器A上有一个X会话,并且我想在B上运行一个X程序。

ssh -X B使这项工作透明化。但是,如果缺少服务器配置X11Forwarding yes,我对服务器没有root权限,并且服务器管理员无动于衷怎么办?

显然,转发X11连接是可能的,因为我可以通过SSH通道传输任何所需的信息。实际上,如果本地X服务器允许TCP连接,那么就很容易ssh -R 6010:localhost:6000(可以根据显示编号进行调整)。本地X服务器仅允许套接字连接的常见情况如何?如何以最小的安装要求(尤其是在B上)方便,安全地转发X?

Answers:


2

@Demi的答案很好,但我认为填写该表格会很有帮助。

  • 本地-服务Xserver的本地计算机。
  • 远程-为应用程序提供服务的远程计算机,该驱动器将数据发送到Xserver

远端/etc/ssh/sshd_config

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

遥控器~/.Xauthority为空或不存在

在本地:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

在测试中,本地运行Ubuntu 18.05,远程运行Debian Jesse。


6

与TCP端口通信时,X11协议与套接字通信时是否有所不同?

也许您可以结合使用自己的建议用法ssh -R 6010:localhost:6000来通过端口转发引入X11数据,然后使用nc在tcp端口和X11套接字侦听器之间桥接本地gab:

nc -l -p 6000 > /tmp/.X11-unix/X0

是的,就是这个主意。但是我希望得到一个答案,说“将其放在您的.ssh/config客户端和.profile服务器端,然后运行ssh B”。
吉尔(Gilles)“所以,别再邪恶了”,

1
有一个简单的“将其放入您的配置”答案,问题是您排除了您的问题资格,因为您需要的选项位于B上事物的sshd_config端。您正尝试解决放入的块一个地方,使其很难无意间公开一个安全问题。
迦勒(Caleb)

3
我的目标是(在我的经验中很常见)管理员不关心并且只保留默认设置的情况。X11转发不受策略禁止,只是系统管理员的不便而带来的不便。无论如何,X11转发都允许服务器攻击客户端,因此在服务器端禁止它没有多大意义。
吉尔(Gilles)“所以,别再邪恶了”,

@Gilles我同意默认设置并不能真正防止任何有用的东西。那么我们应该游说以使默认值在上游发生变化吗?
卡莱布

对我来说,/tmp/.X11-unix/X0是Unix域套接字,而不是FIFO,因此任何重定向尝试都以结束ENXIO: No such device
Samveen 2015年

2
  1. 使用Xephyr启动其他X服务器。这是出于安全性的考虑-它可以防止远程系统损害您的安全。

  2. 使用SSH将远程套接字转发到Xephyr套接字。SSH也支持转发Unix套接字。

  3. 在远程服务器上正确设置环境变量。

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.