使用 systemd 在 Ubuntu 20.02 上设置 TigerVNC

使用 systemd 在 Ubuntu 20.02 上设置 TigerVNC

我正在尝试在 Ubuntu 20.04 上设置 TigerVNC(或者实际上是任何 VNC 服务器),但我开始感到沮丧,因为我找到的所有说明都不起作用,尽管我已经让它在 CentOS 上运行。这就是我想要实现的目标,据我了解,TigerVNC 应该能够处理它:

  • 为多个用户提供 VNC 服务
  • 应要求用户输入用户名和密码
  • 它必须与 systemd 一起工作

我浏览过的有用的网页比我想列出的还要多,但最新的、稍微成功的一个是TigerVNC(在 Arch Linux 上), 这部分Running Xvnc with XDMCP for on demand sessions

系统很简单:Ubuntu 20.04 带有默认桌面,似乎是基于 GNOME 的——这不是我选择的,但这不适合我使用。/var/log/syslog列出了我尝试连接时的大量输出,但我认为以下内容包含相关错误:

...
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Wacom.desktop[555768]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Wacom.desktop[555768]: Cannot open display:
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Keyboard.desktop[555770]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Keyboard.desktop[555770]: Cannot open display:
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Wacom.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Wacom.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Keyboard.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Keyboard.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-shell[555777]: Failed to create backend: Unable to open display '127.0.0.1:1'
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.MediaKeys.desktop[555774]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.MediaKeys.desktop[555774]: Cannot open display:
...

在客户端 (OSX),我只看到一个对话框告诉我无法连接。我该如何解决这个问题?

答案1

好吧,我的回答有点晚了,但我希望它能有所帮助。我在 Ubuntu 22.04 上遇到了同样的问题,我花了两天时间才找到解决方案。

尝试这个:

  1. 在服务器上安装TigerVNC,即tigervnc-standalone-server。

  2. 按照指南设置服务器,例如
    https://docs.01.org/clearlinux/latest/guides/network/vnc.html
    参见“方法 3:通过 GDM 进行身份验证的多用户登录”
    简要说明:
    a) 创建 systemd 套接字文件/etc/systemd/system/xvnc.socket内容如下:

     [Unit]
     Description=XVNC Server on port 5900
    
     [Socket]
     ListenStream=5900
     Accept=yes
    
     [Install]
     WantedBy=sockets.target
    

    b) 创建 systemd 服务文件/etc/systemd/系统/[电子邮件保护]内容如下:

     [Unit]
     Description=Daemon for each XVNC connection
    
     [Service]
     ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 1920x1200 -once -SecurityTypes=None
     User=nobody
     StandardInput=socket
    

    c) 在文件中/etc/gdm3/custom.conf放:

     [xdmcp]
     Enable=true
     Port=177
    

    d) 启动 VNC 套接字脚本并将其设置为在启动时自动启动。

    sudo systemctl daemon-reload
    sudo systemctl enable xvnc.socket
    sudo systemctl start xvnc.socket
    

    e) 检查。如果你

    systemctl | grep vnc
    

    你至少应该看到:

    xvnc.socket               loaded active listening XVNC Server on port 5900
    
  3. 在文件中/etc/gdm3/custom.conf取消注释该行:

    WaylandEnable=false
    

    解决了连接后立即黑屏的问题。

  4. 编辑:
    在文件中/etc/gdm3/custom.conf在 [xdmcp] 部分添加:

    DisplaysPerHost=5
    

    在哪里5这是允许的最大 VNC 连接数的示例。

    它解决了更多连接的“读取(104:对等方重置连接)”问题。

  5. 在文件中/etc/tigervnc/vncserver-config-默认值找到参数 $session 并设置:

    $session = ubuntu
    

    (对于可能的会话值,请查看文件夹/usr/share/xsessions,使用不带 .desktop 后缀的名称)

    解决了登录屏幕后黑屏的问题。

  6. 尝试从客户端连接到 <server-ip>:5900。

相关内容