1. 使用 ssh 登录你的机器

1. 使用 ssh 登录你的机器

我有一个工作 Linux,我可以通过ssh和远程登录ssh -Y

我想使用的一个应用程序使用 GLFW。疫情爆发之前,我可以远程工作,因为有一个用户(我)在本地登录。

现在,我需要重启机器,虽然我可以通过 ssh 登录,但自从重启后没有用户登录过。因此,我的应用程序无法启动。我得到:

Cannot initialize GLFW library

当应用程序尝试打开显示时。(我不关心这个显示,应用程序会生成我可以远程访问的输出文件)

我尝试使用 xterm 导出显示export DISPLAY=[my ip address]:0并使其正常工作。但这没用,因为我的应用程序需要一些 OpenGL:

what():  GLFW error: GLX: Forward compatibility requested but GLX_ARB_create_context_profile is unavailable

所以,我想问的是:

通过 ssh (-Y),我如何才能像坐在机器前一样登录用户? 我推测 X 启动过程中缺少了某些部分。

如果这有用:

4.15.0-91-generic #92~16.04.1-Ubuntu SMP Fri Feb 28 14:57:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

答案1

这是一个从远程 ssh 连接为超级用户打开本地 X 桌面的解决方案。我希望它会很有用,因为我无法让它为普通用户运行。

1. 使用 ssh 登录你的机器

2.允许任何人在控制台上打开本地 X11 会话

你必须编辑/etc/X11/Xwrapper.config并改变

allowed_users=console

allowed_users=anybody

3. 启动会话(sudo)

sudo startx

X11 会话启动(以超级用户身份),您可以在 ssh 会话上看到正常的 X11 会话消息。

startx 直到 X11 会话退出后才会退出。如果 startx 退出时出现错误消息,则表示出现了问题。

对于普通用户来说,它通常会失败

在某些系统上,您可以只使用 startx(或 startx -- vt[number] 来强制使用虚拟控制台)但通常会失败。

它似乎与以下访问权限相关(至少):

  • /dev/tty[数字]
  • /dev/dri/card0
  • /dev/fb0

这些权利应该通过某种机制来设置,并用 chown 强制它们会做出一些改进,但并不能解决问题。

我无法找到普通用户可以使用 startx 的系统与无法使用 startx 的系统之间的区别。它们都运行 ubuntu eoan,据我所知,配置相同。只有硬件不同,尤其是视频卡。

相关内容