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 登录屏幕的持续流(或发生其他任何情况)使锁定屏幕不断报告“身份验证错误”,就好像提供了不正确的密码一样)?
请注意,当我经过锁定屏幕时,在bash
shell 中,似乎没有发送任何不需要的击键 - 即我可以键入、执行命令等,而不会受到任何意外击键的干扰。
相关(?)问题:如果这没有使主题混乱:请注意,我运行的脚本位于前台,即:
$ 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