我想要远程启动远程机器上的 xserver。
如果我直接在主机上输入“startx”(即使用物理键盘),xserver 会按预期启动。但是,当我尝试使用同一用户通过 ssh 执行此操作时,却不起作用。
我收到以下服务器错误:
(EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)
sudo startx 甚至可以在远程工作。
是什么阻止 xserver 在远程连接上启动?如何解决这个问题?
答案1
tty
要运行 X,您需要对要在其上运行 X 的设备具有读/写访问权限(就您而言tty7
)。过去,Xorg
通常以 root 身份运行,并且/usr/bin/Xorg
二进制文件已设置 SUID 位,因此权限方面没有任何问题。
最近,Linux 发行版开始切换到无根/无 SUIDXorg
二进制文件,因此 X 服务器具有与用户相同的权限。对于在物理 ( tty
) 控制台上登录的用户来说,这不是问题,因为login
进程会将设备的所有权更改tty
为登录用户。
有几种方法可以解决这个问题。
最干净的方法可能是将 Xorg 的 SUID 位恢复原状:
sudo chmod u+s /usr/lib/xorg/Xorg
答案2
阅读man ssh
,并使用-X
或-Y
选项。
https://manpages.ubuntu.com/manpages/bionic/en/man1/ssh.1.html