TigerVNC 锁屏问题解决方案

问题诊断

  • 根本原因:Linux logind 服务将会话标记为"locked"(常见于休眠/锁屏后)
  • 典型表现
    • VNC 连接后黑屏
    • 认证失败提示
  • 直接解决方案
    loginctl unlock-sessions  # 解锁所有会话
    

[TOC]


永久性解决方案

方案A:禁用自动锁屏(推荐用于服务器)

gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.session idle-delay 0

方案B:配置自动解锁(需要polkit规则)

创建规则文件:

sudo nano /etc/polkit-1/rules.d/85-unlock-vnc.rules

添加内容:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.unlock" && 
        subject.isInGroup("vncusers")) {
        return polkit.Result.YES;
    }
});

方案C:系统级会话保持

sudo nano /etc/systemd/logind.conf

修改关键参数:

IdleAction=ignore
HandleLidSwitch=ignore

系统状态验证

检查会话状态

loginctl list-sessions

预期输出示例:

SESSION  UID USER   SEAT  TTY     STATE
    1 1000 user1  seat0 tty2    active  # 确保状态非locked
    ```
实时监控命令
```bash
journalctl -f -u systemd-logind | grep -E 'SessionLock|SessionUnlock'

VNC服务优化配置

修改xstartup脚本

nano ~/.vnc/xstartup

添加以下内容:

#!/bin/bash
# 禁用GNOME自动锁屏
gsettings set org.gnome.desktop.screensaver lock-enabled false
exec gnome-session

关键命令速查表

场景命令
解锁指定会话loginctl unlock-session <SESSION_ID>
解锁所有会话loginctl unlock-sessions
查看锁定状态loginctl show-session
禁用休眠功能systemctl mask sleep.target suspend.target

检查最近锁屏记录:

journalctl -u systemd-logind --since "1 hour ago"
文章作者: Billy
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 billy blog
教程 服务器调教
喜欢就支持一下吧
打赏
微信 微信