如何在 gnu/linux 中在远程机器上 startx

如何在 gnu/linux 中在远程机器上 startx

我想要startx在远程机器上,X在该远程机器的显示器/监视器上进行会话。

背景:我的机器都运行 Arch Linux,它们都不使用图形登录管理器(如 GDM 或 KDM 等)。我通常登录 tty,然后输入“ startx”以启动我的 XFCE4 会话。在工作时,我有时会通过 VNC 连接到我的家用机器。这很好用。有时,我会做一些需要我的远程机器(在家里)重新启动的事情。

如果我这样做,就没有办法重新连接到机器,因为我的 VNC 连接需要正在运行的 X 会话(就x11vnc我的情况而言)。因此,我需要一个程序以某种方式连接到我刚刚重新启动的远程机器(到 TTY1)以便输入username,password和“ startx”。

有人可以提示一下如何做到这一点吗?

答案1

你的方法是正确的。但是你无法按照你建议的方式远程启动 x。要使 x11vnc 正常工作,你需要运行 Xserver。我建议你安装 xdm,它将带你进入 X 中的登录屏幕。然后你可以在 Xserver 上安装 x11vnc 并以此方式登录。

答案2

ssh -X ...将启用X11转发。但需要服务器端的支持。

PS:我最近尝试运行整个 xfce 会话。所以我自己也很好奇 :D

答案3

问题最终源于Xorg二进制文件不再具有 setuid root 权限,并且远程 ssh 无法让您在真实计算机上获得所需的权限tty

您可以通过编辑/创建文件来合理干净地解决此问题/etc/X11/XWrapper.conf并确保设置:

allowed_users = anybody

Xorg.wrap(1). 然后您将能够运行startxSSH 会话。

这将运行您在实际屏幕上通常获得的任何 Xorg(没有 Xvfb 或其他 hack)。我使用libvnc.soXorg 加载的 TigerVNC 模块,因此我可以直接使用 VNC,并且性能合理。

最后一个问题:如果您使用它来从断电中恢复,某些驱动程序/Xorg 组合将无法启动,如果它们无法确定所连接显示器的分辨率(即,如果没有显示器或显示器已关闭)。这个答案为我工作英伟达显卡:

Section "Device"
  ..
  Driver "nvidia"
    Option "AllowEmptyInitialConfiguration" "true"
EndSection  

您可能还需要设置具有虚拟尺寸的显示,或者xrandr --fb WxH如果分辨率不符合预期,则使用它来修复分辨率。

相关内容