Answers:
我已经阅读了问题的编辑版本,如果我理解正确,你想从SSH运行程序而不向你显示GUI ...你只想运行该程序,它取决于X Windows,所以你需要它以某种方式连接到服务器本身的X Windows。
你需要做两件事。您需要允许来自X Windows外部的连接,然后您需要告诉shell(在SSH中)要绑定哪个X服务器。
首先,允许到X服务器的传入连接。在服务器计算机上的X Windows中打开终端窗口。 (你必须有权访问它,否则你不能这样做。)
发出以下命令:
xhost +
它应该告诉你“允许来自所有主机的连接”或者那种效果。
然后,在仍然保留在X Windows中时,发出:
echo $DISPLAY
这将告诉您显示ID。写下来或记住它。通常它将是“:0”或“:0.0”,但如果不同则不要担心。
这就是你需要从X Windows本身做的所有事情。
现在可以从任何地方SSH到服务器。发出命令:
export DISPLAY=[what-the-echo-command-gave-you]
这应该是它!现在您应该可以从该SSH shell运行任何X窗口,它将在本地X Windows服务器上弹出。
希望能帮助到你!
xhost +
?我正在承担什么风险(我必须先登录)?
xhost +
关闭x服务器的所有访问控制。任何可以连接到X服务器的人都可以窥探事件,注入事件,转储窗口内容,杀死在X服务器上运行的程序等。这些功能可以用作拒绝服务,任意程序执行或其他不良事情。看到 www2.slac.stanford.edu/computing/security/xwindow 有关此更多信息。您应该在大多数设置下执行的操作 echo $XAUTHORITY
代替。如果它不是空的,那么当你想运行一个GUI程序时呢 export XAUTHORITY=<saved content of $XAUTHORITY>
。
gimme-xauth.sh
在你的/ usr / bin中获得乐趣和Xstasy。 pastebin.com/GXx2hwC5
首先,这不是一个编程问题(s / b serverfault.com)
但是,您需要在系统上运行X服务器(例如XMing),然后在Linux机器上运行GUI程序,这将把GUI放在您的机器上。
我发现使用终端多路复用器这样做最容易 screen
要么 tmux
。它不需要搞乱 xhost
。复制和粘贴授权,或类似的东西。
基本理念:
screen
要么 tmux
会话。 (这确实意味着在VNC中点击,但这是你必须这样做的唯一时间。) screen
要么 tmux
会话。 GNU屏幕示例:
在远程机器的虚拟终端中(通过VNC或物理打开):
you@remote:~$ screen -S myscreen
然后,当您进入SSH时,您可以只附加到该会话:
you@remote:~$ screen -x myscreen
然后,在屏幕会话中,运行您想要的任何应用程序:
you@remote:~$ myapp &
xhost +
是一个非常糟糕的主意。如果您的用户启动了Xserver,那么您应该已经拥有相应的Xauthority文件,无需使用服务器主机acls。