linux - 在没有 SSH 的情况下转发 X11?如何在另一台运行 X Server 的 Pc 上运行本地应用程序?

标签 linux ssh cygwin x11 portforwarding

我正在使用 Cygwin X 和 Debian。我可以通过 SSH 转发我的 X session ,但发生的事情是我似乎偶尔会在 X session 中丢失显示转发(从 Cygwin 到 Linux)。所以我猜这是 Cygwin 的一个实现,因为当我使用 Linux 到 Linux 时,我从来没有在同一个 ssh session 中丢失 X11 显示。

当 X11 转发的应用程序尝试 fork 另一个进程时也会发生这种情况,假设我运行 Thunderbird 并单击电子邮件中的 url。 Thurderbird 自然会尝试启动默认的 Web 浏览器,但它不会在 Cygwin X 服务器上执行此操作,这是当 SSH session 由于各种我无法知道的原因而放弃显示时收到的消息。

“错误:无法打开显示:localhost:10.0”

另一个问题是,由于 ssh 放弃了显示变量,我必须重新启动我的 ssh session 才能使其正常工作,这也会杀死我可能在 ssh session 期间运行的其他应用程序。

无论如何,在为此苦苦挣扎了一段时间之后,我想我希望能够在不使用 ssh 转发的情况下在另一个显示器上打开我的应用程序。我在内部使用它,它几乎是一个封闭的局域网,所以我现在不担心安全问题。我只想能够在 Linux 上运行该应用程序,然后在运行 Cygwin 的 Pc 上查看该应用程序。

我尝试了基本的 DISPLAY 变量,例如“export DISPLAY=MY_CYGWIN_PC_IP:0.0”(在 Linux Pc 上),但它不起作用。

所以我想知道如何实现这一目标。实现我需要的正确设置是什么?

最佳答案

你的方向没问题。 export DISPLAY 就是你想要的。但这还不够。

在目标上,你需要输入

xhost +from.where.the.windows.are.coming.com

它授予 X 服务器允许从这台计算机远程打开窗口的权限。

当心,它不是真的安全!可能的攻击者不仅可以显示您显示的窗口,甚至可以控制您的鼠标/键盘。但对于简单的解决方案,或者如果您可以信任远程计算机你们之间的网络,则可能没问题。

如果没有,则有基于预共享 key 的高级授权。它被命名为 xauth。谷歌 xauth。

Xorg 服务器有一个禁用远程窗口的选项,并且有一些发行版(例如 ubuntu!)默认打开此选项。您可以对其进行测试 - 如果您可以远程登录到 tcp 端口 6000,则它是允许的。

关于linux - 在没有 SSH 的情况下转发 X11?如何在另一台运行 X Server 的 Pc 上运行本地应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548509/

相关文章:

linux - 如何在 linux ubuntu server 12.04 中用一个命令重命名多个前缀文件名

linux - 可能有多少个套接字连接?

linux - 在 vim 编辑器中输入 ^Q

git - 使用 GitHub 进行 Mac OS 命令行身份验证

linux - Git 不断提示我输入 SSH key 的密码 - Ubuntu VM

git - 无法使用 Bamboo Remote Agent 克隆存储库

cygwin - 使用 Cygwin 安装 JDK 的最新版本?

python - 如何使用最新版本的 pip 下载或安装 Gitlib 作为独立库?

python - 在 cygwin 中安装 matplotlib 时出错

c++ - 在 Linux 上的两个应用程序之间共享数据