Mar*_*iae 8 ssh xorg x11 network-namespaces
我ssh -Y ...
从一台机器(=客户端)连接(通过)到另一台机器(=服务器,实际上在我的局域网中,但它无关紧要);然后我在服务器上启动一个新的网络命名空间(简称 NNS),我启动一个 xterm(来自默认命名空间),它完美地显示在我的客户端上,最后,从 xterm 中,我加入了非默认 NNS ,
ip netns exec NNSName bash
Run Code Online (Sandbox Code Playgroud)
我可以检查我是否在新的 NNS 中,
ip netns identify $$
Run Code Online (Sandbox Code Playgroud)
我可以在新的 NNS 中运行复杂的程序,例如 OpenVPN。
问题就在这里:我想xeyes
从新的 NNS 中启动一个图形应用程序(即使只是暂时),但我不能,我总是被告知:Unable to open DISPLAY=...
诚然,我只尝试了显而易见的:
DISPLAY=:0.0
DISPLAY=:10.0
DISPLAY=localhost:10.0
DISPLAY=localhost:20.0
DISPLAY=ClientName:10.0
DISPLAY=ClientIPAddress:10.0
Run Code Online (Sandbox Code Playgroud)
始终xhost +
在客户端上,用于纯调试目的。
我没有问题:
通过ssh -Y ....
从客户端连接到服务器,xeyes
在服务器上运行并在客户端上显示它;
在服务器上启动一个新的 NNS,并在 NNS 中启动要显示在服务器上的图形应用程序(即,在这种情况下忘记客户端)。
当我将这两个东西(ssh 和命名空间)放在一起时,我无法在服务器的新 NNS 中运行的客户端应用程序上显示。
看起来标准的 TCP 端口 6010 属于默认 NNS 的 ssh 会话,而新的 NNS 应该有自己的。我当然可以在新的 NNS 中启动一个 ssh 服务器并直接从客户端连接到服务器的新 NNS,但我想知道:有没有更简单的方法来做到这一点,即在服务器的新 NNS 上显示运行的图形应用程序客户端的 X11 服务器?
小智 3
我遇到了类似的情况,这是我的解决方法。
\n\n一些背景:我必须跨越命名空间内的多个 selenium Firefox 实例,以便将它们与不同的 IP 地址绑定。但如你所知,我遇到了错误:
\n\nError: Can\'t open display: localhost:10.0\n
Run Code Online (Sandbox Code Playgroud)\n\n我没有像 Marius 建议的那样使用 unix 套接字,而是将 SSHD X11Forwarding 绑定到 * 而不是 localhost(在配置中添加“X11UseLocalhost no”)并使用 socat 重定向简单的 TCP 连接。
\n\n注意这样做的安全后果!!!
\n\n在 sshd 上进行此更改后,当您从此登录时,显示将自动更改:
\n\n DISPLAY=localhost:10.0\n
Run Code Online (Sandbox Code Playgroud)\n\n对于类似的事情:
\n\n DISPLAY=10.0.0.1:10.0\n
Run Code Online (Sandbox Code Playgroud)\n\n之后我只需要重定向:
\n\nip netns exec my-NNS socat tcp-listen:6010,reuseaddr,fork tcp:192.168.5.130:6010 &\n
Run Code Online (Sandbox Code Playgroud)\n\n然后你应该能够使用 xeyes、firefox、x-whatever-you-want...:
\n\nip netns exec my-NNS xeyes &\n
Run Code Online (Sandbox Code Playgroud)\n\n瞧\xc3\xa0!
\n 归档时间: |
|
查看次数: |
2372 次 |
最近记录: |