VNC 之 在登录后,显示当前桌面

原文地址:VNC 之 在登录后,显示当前桌面(永久地址,保存网址不迷路 🙃)

问题描述

在大多数场景中,我们搭建 VNC 服务,然后远程登录,输入密码,在登录成功后,将显示新会话(新桌面、新登录)。

但是,我们希望连接 VNC 服务后,可以显示当前会话(当前桌面、已经登录桌面),而不是在连接成功后显示新桌面。

该笔记将记录:在 Linux Desktop 中,如何共享当前桌面,以及常见问题处理。

解决方案

如果想实现「在连接 VNC 服务时,显示已经存在的会话」功能,关键是找到正确的软件。这里有两个解决方案,属于同类型:
1)使用 TigerVNC 的 x0vncserver 服务。它也实现相同功能;
2)使用 x11vnc 来搭建 VNC 服务。它将附加到正在运行的会话,共享桌面;

方法一、使用 TigerVNC/x0vncserver 服务(推荐)

系统环境:Debian GNU/Linux 10 (buster)

第一步、安装服务

apt-get install -y tigervnc-scraping-server

第二步、运行服务

如果希望使用独立的帐号密码来登录 VNC 桌面,以当前桌面用户执行如下命令:

# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

# x0vncserver -rfbauth "~/.vnc/passwd"

如果希望使用 Linux 系统的用户的帐号密码,执行如下命令

# /usr/bin/x0vncserver -PAMService=login -PlainUsers=$(whoami) -SecurityTypes=None

第三步、远程登录

使用 VNC 客户端进行登录即可,这里不再赘述。

关于开机自启动问题

我们还能够通过 XDG autostart 来实现子启动(推荐):

cat > ~/.config/autostart/x0vncserver.desktop <<EOF
[Desktop Entry]
Exec=sh -c '/usr/bin/x0vncserver -PAMService=login -PlainUsers=\$(whoami) -SecurityTypes=None'
Name=x0vncserver
Type=Application
Version=1.0
EOF

# 鉴于该文件仅会在用户登录时自动加载,因此当首次创建该文件后,我们需要手动启动。
cp ~/.config/autostart/x0vncserver.desktop ~/.local/share/applications/x0vncserver.desktop
gtk-launch x0vncserver.desktop

我们能够通过 systemd 实现开机自启动:

mkdir -pv ~/.config/systemd/user/

cat > ~/.config/systemd/user/x0vncserver.service <<EOF
[Unit]
Description=Remote desktop service (VNC)

[Service]
Type=simple
ExecStartPre=/bin/sh -c 'while ! pgrep -U "$USER" Xorg; do sleep 2; done'
# 对于系统帐号密码,使用如下 ExecStart 指令:
ExecStart=/usr/bin/x0vncserver -PAMService=login -PlainUsers=${USER} -SecurityTypes=None
# 对于独立帐号密码,使用如下 ExecStart 指令:
# ExecStart=/usr/bin/x0vncserver -rfbauth %h/.vnc/passwd

[Install]
WantedBy=default.target
EOF

systemctl start --user x0vncserver.service
systemctl enable --user x0vncserver.service

# 该方法的缺点在于 ExecStartPre 无法 100% 保证已经进入桌面
# 如果未进入桌面,则启动 x0vncserver 将失败。

方法二、使用 x11vnc 来搭建 VNC 服务

接下来开始搭建 x11vnc 服务,实验环境为 Debian GNU/Linux 10 (buster) 发行版。

第一步、安装软件

apt-get install x11vnc

第二步、运行服务

x11vnc -display $DISPLAY -usepw -listen <IP_of_interface> -autoport 5903

# -display : 要显示的屏幕。这里使用「$DISPLAY」获取当前显示器,通常为「:0」。
# -usepw   : 使用用户密码进行认证。服务启动后会提示你输入密码。
# -listen  : 要监听的IP地址。
# -autoport: 指定要监听的端口号。如果未指定,则会自动创建监听端口号,并在控制台输出监听的端口号。

如果要使用 xinetd 运行,可以参考 How to VNC to the primary display in ubuntu (display :0) 一文。

第三步、远程访问

使用 VNC 客户端进行连接即可,这里不再详细介绍。

附加说明

如果以 root 身份运行它以连接到 xdm 会话,则需要对 Xauth 进行一些研究,因为设置它可能有点繁琐。

常见问题汇总

Unable to connect to VNC Server using your chosen security setting

VNC Connect Error Messages – RealVNC Help Center

问题描述:在使用 REALVNC 连接 x0vncserver 服务时,REALVNC 客户端提示如下信息:

Unable to connect to VNC Server using your chosen security setting.

Either upgrade VNC Server to a more recent version from RealVNC, or select a weaker level of encryption

问题原因:客户端不支持服务端设置的 SecurityTypes 类型

解决方法:设置双方都支持的安全类型,或者修改 x0vncserver 的 -SecurityTypes=None 以关闭

参考文献

Start vncserver on :0 instead of :1
How to VNC into an existing X session?
x11vnc: a VNC server for real X displays
tightvncserver - show the same screen on hdmi and vncclient
TigerVNC - ArchWiki

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果树莓派的VNC无法显示桌面,可能有几个可能的原因和解决办法。首先,可能是由于分辨率太小而无法显示。您可以尝试在终端中输入"sudo raspi-config"来解决此问题,然后选择适合您显示器的分辨率。 另一个可能的原因是VNC密码设置不正确。请确保您使用的是正确的密码,该密码不仅用于VNC远程桌面,也用于远程SSH登录和需要管理员权限时输入密码。 最后,也可能是由于其他未知原因导致的VNC无法显示桌面。您可以尝试查看引用提供的完美解决办法,其中列出了几种可能的情况和相应的解决办法。 希望这些信息对您有帮助,祝您成功解决树莓派VNC无法显示桌面的问题!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [树莓派 vnc Cannot currently show the desktop](https://blog.csdn.net/qq_43619832/article/details/124243048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决树莓派4b开启VNC报错无法正确显示桌面](https://blog.csdn.net/qq_45847938/article/details/128801328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [零基础玩转树莓派②树莓派的内部配置与使用VNC远程树莓派,窗口不能完全显示树莓派桌面问题的解决方法](https://download.csdn.net/download/weixin_38690079/14884011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值