为什么与 linux 锁屏的 vnc 连接被“锁定”并且无法输入密码?

为什么与 linux 锁屏的 vnc 连接被“锁定”并且无法输入密码?

VNC我使用查看器/服务器从 Windows 机器连接到 Linux 机器。

在 Linux 机器上,当我的会话超时并且锁屏启动后,如果我随后尝试通过 VNC 使用 gui 解锁,我似乎会被永久“锁定”,无法在屏幕上输入任何文本密码提示。更具体地说,似乎某些Enter字符流不断地通过 VNC 传输,触发登录提示,让用户认为用户不断地输入 0 长度的密码:注意所附屏幕截图中的“身份验证错误”语句,表明登录屏幕认为某物已输入。此外,如果我在这里进行压力测试,通过快速打字,一两个“隐藏字符”符号将出现,然后再次快速消失。一直以来,“身份验证错误”一直显示。

我发现这种情况的解决方法是直接登录 Linux 机器并运行以下脚本:

$ while true; do loginctl unlock-session 2 > /dev/null 2>&1; sleep 1; done

...该数字2是我的“会话 ID”。该脚本具有在锁屏出现时关闭锁屏(一秒内)的效果 - 这并不完全是最佳解决方案,但比无法输入密码的永久锁定要好。

为什么这是必要的?VNC有人可以解释一下查看器/服务器、Linux 盒子上的锁定屏幕或任何其他相关软件发生了什么,以及为什么会出现专门Enter发送VNC到 Linux 登录屏幕的持续流(或发生其他任何情况)使锁定屏幕不断报告“身份验证错误”,就好像提供了不正确的密码一样)?

请注意,当我经过锁定屏幕时,在bashshell 中,似乎没有发送任何不需要的击键 - 即我可以键入、执行命令等,而不会受到任何意外击键的干扰。

相关(?)问题:如果这没有使主题混乱:请注意,我运行的脚本位于前台,即:

$ while true; do loginctl unlock-session 2 > /dev/null 2>&1; sleep 1; done

...不是...

$ while true; do loginctl unlock-session 2 > /dev/null 2>&1; sleep 1; done &

...如果我尝试脚本的后台版本,它具有一次性效果,即锁定屏幕仅在第一次运行时被解除,但此后永远不会,与脚本的前台版本相比,这似乎保持锁屏永远消失。在这种情况下,为什么解决方法脚本位于后台还是前台会产生影响?


环境详情:

$ uname -a
Linux linuxbox 5.3.11-100.fc29.x86_64 #1 SMP Tue Nov 12 20:41:25 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:1  2958

$ loginctl list-sessions
SESSION   UID USER    SEAT   TTY
      2  1000 user    seat0  tty2

1 sessions listed.

在此输入图像描述

答案1

Gnome 似乎意识到了这个错误。您可以在此处查看问题的演变https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2196

相关内容