为什么通过 SSH 启动任何基于 GNOME 的程序需要大约 30 秒?

pvc*_*pvc 6 ssh gnome remote

基于 GNOME 的程序总是需要大约 30 秒才能通过 SSH 启动。即使是最简单的,比如gnome-calculator. 所述程序启动后,它们运行绝对正常。我正在使用ssh <user>@<host> -YC命令启动 SSH 会话。在此等待期间,我尝试检查 CPU 使用情况,但没有任何异常。网络带宽使用似乎也不过量(在 0.2 到 2 KiB/s 的范围内)。

我经常通过 SSH 使用我的 Ubuntu 19.10 机器,这对我来说是一个很大的问题。我在早期的 Ubuntu 版本中也看到过这个问题。

编辑:我发现在调用 to 时会发生这种延迟g_application_run()。跑步strace解释了延迟时间。在该延迟之前的最后一个系统调用是poll([{fd=11, events=POLLIN}], 1, 25000). 25000 以毫秒为单位超时。所有受影响的程序都在这个特定的系统调用中停止。文件描述符 11 是使用eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK). 所有这些都意味着程序正在等待某种永远不会发生的事件。但它可能是什么以及什么会导致它?

Jan*_*nne 5

我相信这是由于 DISPLAY 环境变量没有传播到名为“xdg-desktop-portal-gtk”的本地服务。如果启动失败,每个 gnome 应用程序都会在启动过程中尝试启动它,等待它启动,然后在失败时约 25 秒后超时。

您可以在登录后手动修复此问题。首先,更新 dbus 进程的环境:

$ dbus-更新-激活-环境 --systemd DBUS_SESSION_BUS_ADDRESS 显示 XAUTHORITY

然后启动服务:

$ systemctl --用户启动 xdg-desktop-portal-gtk

现在启动应该又快了。

如果有人知道每次使用登录远程系统时自动执行此操作的最佳/最优雅的方法,我想了解一下。


Ole*_*nge 1

30 秒听起来很像 DNS 超时。

将问题更新为:

time ssh localhost echo
time ssh -YC user@remote echo
time ssh -YC localhost gnome-calculator
Run Code Online (Sandbox Code Playgroud)

我的猜测是remote无法反向查找您的 IP 地址。所以尝试添加这个server:/etc/hosts

 i.p.n.o myclient
Run Code Online (Sandbox Code Playgroud)

其中 ipno 是您的客户端 IP 地址。