让 Tightvnc 服务器在 Debian 8(使用 KDE)上运行

让 Tightvnc 服务器在 Debian 8(使用 KDE)上运行

我对此问题进行了大量研究并尝试修复,主要涉及调整 xstartup 文件。我已在 Windows 7 计算机上尝试过替代 VNC 客户端(UltraVNC 和 TightVNC),每个客户端的结果相同。

基本上,我要么看到一个空白的灰色屏幕,只有一个箭头光标,要么根本无法连接。

我还尝试了不同的 VNC 服务器 (VNC4server),但放弃了它,因为虽然我可以连接,但每次在客户端窗口上都会出现错误。而且 Tightvnc 似乎使用更广泛并且受到用户支持。

我发现,几乎无论我在 ~/.vnc/xstartup 文件中放入什么内容(例如,即使它只有一行(startkde &),如果我指定“root”作为 VNC 用户,它也会起作用。但是然后我以 root 身份登录,而需要遵循以非 root 用户身份登录的标准 *nix 做法,因此,该问题似乎与权限有关。但是,我检查了正确的所有权和可执行标志。每次编辑后的文件。

我在某处读到,如果主机上已经有一个桌面会话正在运行(用户已登录),最新的 Tightvnc 服务器将不允许启动 KDE 桌面,因此我在没有任何人登录的情况下启动主机。我已将 Tightvnc 服务器配置为一项服务。

我当前的 xstartup 文件如下,但正如我所说,我已经尝试了这些行的许多变体,从互联网上收集的建议中注释掉了几乎所有内容。

#!/bin/sh

# 对于普通桌面,取消注释以下两行:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc &
# unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# x-window-manager &
exec startkde &

这是服务文件 /lib/systemd/system/tightvncserver.service :

[单位]
描述=TightVNC 远程桌面服务器
After=sshd.service

[服务]
类型=dbus
ExecStart=/usr/bin/vncserver -geometry 1024x768 -深度 24 :1
用户=vnc
类型=forking

[安装]
WantedBy=多用户.target

以下是主机重新启动一次并尝试连接一次后的日志:

2016 年 3 月 14 日 01:37:46 Xvnc 版本 TightVNC-1.3.9
16 年 3 月 14 日 01:37:46 版权所有 (C) 2000-2007 TightVNC Group
16 年 3 月 14 日 01:37:46 版权所有 (C) 1999 AT&T 实验室剑桥
14/03/16 01:37:46 保留所有权利。
2016 年 3 月 14 日 01:37:46 参见http://www.tightvnc.com/有关 TightVNC 的信息
14/03/16 01:37:46 桌面名称“X”(测试:1)
14/03/16 01:37:46 支持的协议版本:3.3、3.7、3.8、3.7t、3.8t
14 /03/16 01:37:46 侦听 TCP 端口 5901
/home/vnc/.vnc/xstartup: 12: /home/vnc/.vnc/xstartup: vncconfig: 未找到
x-terminal-emulator: 未知上的 VNC 连接选项“ls”。
x-terminal-emulator:使用 --help 获取可用命令行选项的列表。
错误:无法创建目录“/tmp/ksocket-vncw1nXNU”:文件存在
startkde:正在启动...
kdeinit4:正在中止。 bind() 失败:地址已在使用中
无法绑定到套接字 '/tmp/ksocket-vncGcyXe4/kdeinit4__1'

14/03/16 01:38:09 从客户端 192.168.10.10 获得连接
14/03/16 01:38:09 使用协议版本 3.8
14/03/16 01:38:14 192.168.10.10 通过完全控制身份验证
14/03/16 01:38:14 客户端 192.168.10.10 的像素格式:
14/03/16 01:38:14 32 bpp,深度 24,小端
14/03/16 01:38:14 真彩色:最大r 255 g 255 b 255,shift r 16 g 8 b 0
14/03/16 01:38:14 无需翻译
14/03/16 01:38:14 对客户端使用 hextile 编码 192.168.10.10
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码 19
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码 18
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码 17
14/03/16 01: 38:14 rfbProcessClientNormalMessage:忽略未知编码 16
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码 10
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码 9
14/03/16 01:38: 14 rfbProcessClientNormalMessage:忽略未知编码 8
14/03/16 01:38:14 对客户端 192.168.10.10 使用压缩级别 6 14/03/16 01:38:14 为客户端 192.168.10.10 14/03
启用全彩光标更新
/16 01:38:14 为客户端 192.168.10.10
14/03/16 01:38:14 启用光标位置更新 为客户端 192.168.10.10
14/03/16 01:38:14 rfbProcessClientNormalMessage: 忽略未知编码 -65530
14/03/16 01:38:14 为客户端 192.168.10.10 14/03/16 01:38:14 rfbProcessClientNormalMessage 启用 LastRect 协议扩展
:忽略未知编码 -223
14/03/16 01:38:14 rfbProcessClientNormalMessage :忽略未知编码-32768
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码-32767
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知编码-32764
14/03/16 01:38:14 RFBProcessClientNormalMessage:忽略未知的编码-32766
14/03/16 01:38:14 rfbProcessClientNormalMessage:忽略未知的编码-32765 -32765
14/03/16 01:38:14 RFBPROCESSCLOCESSCLOCESSCLECCLECCLECCLMESS. 6 01:38
: 43 客户端 192.168.10.10 消失
14/03/16 01:38:43 统计数据:
14/03/16 01:38:43 收到关键事件 0,指针事件 260
14/03/16 01:38:43 帧缓冲区更新 2,矩形 5,字节 776789
14/03/16 01:38:43 光标形状更新 2,字节 4920
14/03/16 01:38:43 光标位置更新 1,字节 12
14/03/16 01:38:43 十六进制矩形 2,字节 771857
14/03/16 01:38:43 原始字节相当于 6291480,压缩比 8.151095

有任何想法吗?

[编辑,2014/03/14,1409 UTC]:我忘了提及它在 XFCE 桌面上运行时没有错误。但我更喜欢 KDE,并且如果可能的话我希望让它发挥作用。

[编辑,2014/03/14,2216 UTC]:这是 Paul H. 建议的后续内容,我将其放在这里是因为注释的迷你格式似乎不允许块引用和图像。

谢谢你,这让我更进一步。在我发出“startkde &”命令后,客户端窗口将打开,并显示一个看起来合理的桌面,该桌面开始加载并在关闭之前到达此位置(请注意左上角的错误消息):

注意左上角的错误消息

日志如下:

14/03/16 21:32:11 桌面名称“X”(测试:1)
14/03/16 21:32:11 支持的协议版本:3.3、3.7、3.8、3.7t、3.8t
14/03/16 21:32:11 侦听 TCP 端口 5901
QDBusConnection 上的 VNC 连接:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。
QDBusConnection:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。

14/03/16 21:32:37 从客户端 192.168.10.10 获得连接
14/03/16 21:32:37 使用协议版本 3.8
14/03/16 21:32:47 192.168.10.10 通过完全控制身份验证
14/03/16 21:32:47 客户端 192.168.10.10 的像素格式:
14/03/16 21:32:47 32 bpp,深度 24,小端
14/03/16 21:32:47 真彩色:最大r 255 g 255 b 255,shift r 16 g 8 b 0
14/03/16 21:32:47 无需翻译
14/03/16 21:32:47 对客户端使用 hextile 编码 192.168.10.10
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 19
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 18
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 17
14/03/16 21: 32:47 rfbProcessClientNormalMessage:忽略未知编码 16
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 10
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 9
14/03/16 21:32: 47 rfbProcessClientNormalMessage:忽略未知编码 8
14/03/16 21:32:47 对客户端 192.168.10.10 使用压缩级别 6 14/03/16 21:32:47 为客户端 192.168.10.10 14/03
启用全彩光标更新
/16 21:32:47 为客户端 192.168.10.10
14/03/16 21:32:47 启用光标位置更新 为客户端 192.168.10.10
14/03/16 21:32:47 rfbProcessClientNormalMessage: 忽略未知编码 -65530
14/03/16 21:32:47 为客户端 192.168.10.10 14/03/16 21:32:47 rfbProcessClientNormalMessage 启用 LastRect 协议扩展
:忽略未知编码 -223
14/03/16 21:32:47 rfbProcessClientNormalMessage :忽略未知编码-32768
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码-32767
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码-32764
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 -32766
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 -32765
14/03/16 21:32:47 rfbProcessClientNormalMessage:忽略未知编码 -1063131698
连接到已弃用的信号 QDBusConnectionInterface: :服务所有者更改( QString,QString,QString)
QDBusConnection:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。
QDBusConnection:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。
kbuildsycoca4 正在运行...
kbuildsycoca4(989) KBuildSycoca::checkTimestamps:检查文件时间戳
kbuildsycoca4(989) KBuildSycoca::checkTimestamps:时间戳检查正常
kbuildsycoca4(989) kdemain:发出 notificationDatabaseChanged ()
QDBusConnection:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。
QDBusConnection:在 QCoreApplication 之前创建的会话 D-Bus 连接。应用程序可能会出现异常行为。
对象::连接:没有这样的信号 org::freedesktop::UPower::DeviceAdded(QString)
对象::连接:没有这样的信号 org::freedesktop::UPower::DeviceRemoved(QString)
QDBusConnection: 名称 'org.freedesktop. UDisks2'有所有者'',但我们认为它是':1.11'
klauncher:在信号15上退出
knotify4:致命IO错误:客户端杀死了
kded4:致命IO错误:客户端杀死了
konsole:致命IO错误:客户端杀死了
konsole(902)Konsole ::SessionManager::~SessionManager:Konsole SessionManager 已被销毁,但会话仍处于活动状态

从我看到的错误报告来看,第一条错误消息以“应用程序可能行为不当”结尾,应该不重要。剩下的我就不太清楚了..

答案1

KDE 在我的系统上与ightvncserver 配合使用。试试这个 xstartup:

#!/bin/sh
unset SESSION_MANAGER 
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
konsole &

通过 VNC 连接时,您应该会看到一个终端窗口。然后startkde &从终端尝试并查看它是否启动。如果没有,请记下终端中的错误消息并从那里开始。如果确实启动,您可以尝试添加startkde &到 xstartup 脚本的末尾,然后重试。

这是一个使用 vnc4server 和 xfce 为我工作的最小 xstartup。您可以konsole &像以前一样添加并更改xfce4-session &startkde &.我还没有在 KDE 上尝试过。

#!/bin/sh

unset SESSION_MANAGER
xsetroot -solid grey
vncconfig -iconic &
xfce4-session &

答案2

将 sddm 替换为 xdm 修复黑屏问题,现在对我来说效果很好,参考此: https://forums.opensuse.org/showthread.php/532320-vncserver-blank-screen

Switch your Display Manager to XDM, KDM (you would have to install that in Yast, first), or LightDM on the machines you are trying to access.

Code:
su -
and give the password, then:
Code:
update-alternatives --config default-displaymanager
choose your Display Manager from the list.

SDDM does not work well with VNC yet.

相关内容