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

Gil*_*il' 10 ssh xorg xforwarding

考虑这样一种情况,我通过 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 转发?

Cal*_*leb 6

与套接字交谈时,与 tcp 端口交谈时使用的协议 X11 是否有任何不同?

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

nc -l -p 6000 > /tmp/.X11-unix/X0
Run Code Online (Sandbox Code Playgroud)

  • 我的目标是(在我的经验中很常见)管理员不关心并且只保留默认设置的情况。X11 转发并没有被政策禁止,只是系统管理员的冷漠给它带来了不便。无论如何,X11 转发允许服务器攻击客户端,因此在服务器端禁止它没有多大意义。 (3认同)

Cra*_*cks 2

@Demi 的答案很好,但我认为填写它会有很大帮助。

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

偏僻的/etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
Run Code Online (Sandbox Code Playgroud)

远程~/.Xauthority为空或不存在

在本地:

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

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