默认情况下LXC容器下的debian系统是不太具有安装桌面的能力的(这里不是绝对,因为可以做到通过开启其他的tty接口或者添加上特殊权限做到相应的事情)
如果你想要在LXC容器中添加一个桌面要怎么操作呢?


0x00 首先完成系统的更新

apt update

执行后检查是否所有库都可用(不可用会提示错误)

apt upgrade

检查是否可以接受更新,如果不可以接受就暂时先停一下,解决了问题再继续!(很重要)
或者新系统下就直接执行

apt update && apt upgrade -y

这里会直接更新(毕竟也没有重要的文件,不慌)
这里这个地方是为了解决可能出现的版本问题而操作的,你也不希望你遇到其他人都没有遇到过的问题吧?

0x01 安装tasksel操作工具

tasksel是一个简单的操作工具,可以省去很多麻烦(以前装桌面还需要安装一堆Group相关的东西,特别麻烦,现在有这个工具可以使用,方便太多了!)

apt install tasksel -y

提示:默认情况下都有这个工具,可以直接尝试执行tasksel看看可不可用!

0x02 操作tasksel安装桌面环境

执行tasksel

使用上下箭头控制红色小方块在Debian desktop environment(桌面环境)这行按下空格,这时会出现星号,意味着已经准备安装了!
然后向下选择桌面环境,可选的环境有GNOME,Xfce,GNOME Flashback, KDE Plasma,Cinnnamon, MATE,LXDE,LXQT
我这里为了测试多装了几个桌面环境,建议你按照需要选择需要的桌面(推荐GNOME 比较完善,KDE比较完善,Xfce 比较快,LXQT比较快)

图1 tasksel安装选择图

选择好了以后用tab按键切换到下方 这个区域,然后红色方块选择后按下回车即可。

图2 tasksel执行状态


等待进度条走到100%之后,系统会将控制权交回到命令行

0x03 安装VNC服务器(这里安装TigerVNC服务器)和一些其他小工具

apt install wget curl htop screen dnsutils net-tools vim tigervnc-standalone-server dbus-x11 xterm -y

安装完成后就可以执行VNC服务器了

0x04 第一次执行VNC服务器

命令行 vncserver
或者tigervncserver

得到提示You will require a password to access your desktops.(第一次才有的,让你设置一个密码用于连接使用)
输入后按回车再次输入一遍回车后得到提示(如果没有得到提示多半是你密码输入错误,重新试一遍)
Would you like to enter a view-only password (y/n)?这里问你是否需要设置一个只能看的密码(不能操作)
我这里直接选择n然后回车
然后就可以看到服务器已经成功启动,然后已经在端口5901上启动了

图3 vncserver 第一次执行

但是!请直接执行下面的命令终止进程!

vncserver -kill :1

(为什么要终止进程?因为这里需要VNC服务器创建一个对应的文件,方便我们操作!)

0x05 创建并修改xstartup启动脚本

先运行命令
cd
然后运行
cd .vnc
然后运行
vim xstartup

进入vim程序后使用i进入编辑模式,输入或者右键粘贴进这些代码

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop"

然后输入ctrl按住然后按下c然后松开ctrl,退出编辑模式后输入:x按下回车就可以保存了

0x06 重新打开VNC服务器

现在就有了基本的操作空间了,再次执行

vncserver

如果你是远程访问需要修改这个命令为

vncserver -localhost no

检查端口5901防火墙状态(netstat -anop看端口5901,iptables -nL看防火墙状态)
如果没有问题的话,你就可以用你的客户端访问服务器了!
IP:5901 密码是刚才设置的连接密码

连接上之后你会发现只有左上角有一个控制台还有一个说不清的一个可以选择的复选框的小控制台
我们选择控制台,输入命令启动桌面!

启动LXQT桌面(正常)
startlxqt
启动LXDE桌面(root会有报错session错误,但似乎无碍)
startlxde
启动KDE桌面(正常,加载有点慢)
startplasma-x11
启动Xfce桌面(正常)
startxfce4
启动Mate桌面(正常)
mate-session
启动GNOME桌面(root用户似乎会报错,其他用户似乎没有问题)
gnome-session 
启动Cinnamon(如果没有显卡会提示速度慢,但无碍)
cinnamon-session

如果稍微等待一会你能观察到程序启动而且刚才的命令窗口发生变化了的话,程序启动成功!桌面已经正确拉起来了!

0x07 其他

这个时候你可能会发现一个问题,我怎么一关掉这个命令窗口,VNC就中断了?
因为这个命令是让你先测试的,如果没有问题就将刚才的命令后面加上 &(空格和&)
拿KDE桌面举例就是

startplasma-x11 &

这样就会将命令放置在后台运行就不会被我们关掉了!
享受远程桌面吧!

等等!你是不是要问为什么不会自动打开桌面?
可以的,需要设置,设置方法是,打开之前你编辑的那个xstartup文件命令那里(第0x05后半段),然后找到对应的xstartup文件。编辑内容,把xterm开头的那行在最前面加上一个#

#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop"

类似这样,会阻止这行代码运行(被注释了)
添加对应的启动桌面命令

启动LXQT桌面
startlxqt
启动LXDE桌面
startlxde
启动KDE桌面
startplasma-x11
启动Xfce桌面
startxfce4
启动Mate桌面
mate-session
启动GNOME桌面
gnome-session
启动Cinnamon
cinnamon-session

然后保存即可,这样就能自动打开我们选择的桌面了!

等等等等!你是不是还有一个问题?为什么VNC只输入密码就直接进去了,连登陆都没有?
对,你发现了这个问题,但是这是vnc服务器运行在用户模式下的常见情况,一般来说需要登录,但你启动服务都是登陆上去之后才拉起服务器的,所以登陆有些多余!
你是不是还想问如果你就想要一个登陆界面怎么办对吧?
那也可以解决,添加vnc服务器为系统服务,然后再操作,但由于目前我暂时用不上所以没弄!等以后弄了会写一篇专门的介绍的!!!
创建系统服务参考资料:https://computingforgeeks.com/install-and-configure-tigervnc-vnc-server-on-debian/


参考资料:

https://wiki.gentoo.org/wiki/LXQt

https://bbs.archlinux.org/viewtopic.php?id=260318

https://askubuntu.com/questions/1033274/ubuntu-18-04-connect-to-login-screen-over-vnc#:~:text=Provide%20the%20proper%20authority%20and%20set%20the%20display,connect%20to%20it%2C%20you%27ll%20see%20the%20login%20screen.

https://github.com/TigerVNC/tigervnc/wiki/Secure-your-connection

https://wiki.centos.org/HowTos/VNC-Server


搜索词:KDE GNOME LXQT LXDE MATE Xfce GNOME Flashback Cinnamon

在LXC容器下的Debian系统使用VNC连接KDE桌面

在LXC容器下的Debian系统使用VNC连接GNOME 桌面

在LXC容器下的Debian系统使用VNC连接LXQT 桌面

在LXC容器下的Debian系统使用VNC连接LXDE 桌面

在LXC容器下的Debian系统使用VNC连接MATE桌面

在LXC容器下的Debian系统使用VNC连接Xfce桌面

在LXC容器下的Debian系统使用VNC连接GNOME Flashback桌面

在LXC容器下的Debian系统使用VNC连接Cinnamon桌面

最后修改日期:2022年7月28日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。