通过 ssh 启动应用程序

通过 ssh 启动应用程序

我是 SSH 新手。我可以连接到远程计算机。我还可以在远程计算机上启动应用程序并在屏幕上查看其 GUI。

但是我不知道如何启动一个应用程序而不在屏幕上产生输出。

我想启动一个应用程序(例如 rhythmbox),并关闭 ssh 连接,让应用程序保持运行,而不向我的屏幕发送任何输出。

在网上我找到了一些建议,但没有什么帮助;

ssh -X name@domain
nohup rhythmbox &
logout

答案1

您的意思是希望 Rhythmbox 显示在远程计算机的屏幕上吗?DISPLAY环境变量指示显示 GUI 应用程序的屏幕。运行 时ssh -XDISPLAY设置为一个值,表示显示请求必须通过 SSH 连接转发。要使应用程序显示在远程计算机的屏幕上,请设置DISPLAY为值:0

ssh [email protected] 'DISPLAY=:0 rhythmbox &'

还有一个障碍:当应用程序连接到 X 显示器时,它需要提供一种称为 cookie 的密码。每次 X 服务器启动时都会生成 cookie。Ubuntu 将 cookie 存储在一个具有随机生成名称的文件中。找到 cookie 的最简单方法是在 X 服务器启动时将其存储在一个众所周知的文件名中。在 Ubuntu 上,将此代码添加到您的~/.profile

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

有关更多背景信息,请参阅ssh DISPLAY 变量


或者你的意思是你永远不想看到 Rhythmbox 窗口?如果是这样,请让它连接到虚拟 X 服务器,財委 安装 xvfb. 启动虚拟 X 服务器,然后告诉 Rhythmbox 连接到它。

ssh [email protected] 'Xvfb :1 -screen 0 800x600x8 & sleep 1; DISPLAY=:1 rhythmbox &'

相关内容