Linux VPS Server 一般都没有桌面环境,因此也不能使用远程桌面连接,但是有时候可能需要在桌面环境下进行开发测试,因此可以使用一个轻量级的桌面环境软件 Xfce 来使得 Linux 具备远程桌面的功能。这篇文章记录在 Ubuntu 18.04 中安装 Xfce 和 SVN 开启远程桌面访问。
1. 安装 Xfce
使用以下代码安装 Xfce 桌面环境:
sudo apt-get install xfce4
2. 安装远程桌面分享软件 VNC Server
使用以下代码安装 VNC Server:
sudo apt-get install vnc4server
3. 配置 VNC Server
通过第 2 步安装完成 VNC Server 后,首先键入 vncserver 设置当前用户的登陆密码:
此时,VNC Server 默认启动了一个显示器窗口,以 :1 标识。如果后续启动多个显示器窗口示例,则会以 :2 , :3 等等进行标识。
需要注意的是,设置的登陆密码长度最长为 8 位。可以看到图中显示 VNC Server 的默认启动脚本位于 /root/.vnc/xstartup ,将此默认脚本备份后,修改此默认启动脚本,替换其中的内容为以下代码:
#!/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 &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
startxfce4 &
然后使用以下命令重新启动 VNC Server。
# 结束前面产生的窗口 1
vncserver -kill :1
重新启动窗口
vncserver
4. 使用 VNC Viewer 远程连接
从 https://www.realvnc.com/en/connect/download/viewer/ 下载 VNC Viewer,建议直接下载 standalone 版本即可,下载下来直接双击就可运行进行桌面远程连接。
注意进行远程桌面之前,需要确认防火墙是否开放了 VNC Server 远程连接的端口。VNC Server 默认端口是 5900,每建立一个连接,VNC 端口号 +1,同时,还会启动一个桌面进程,从 6001 起,与前面的 VNC 服务对应。因此,对于第一个 VNC 窗口,我们需要开放的端口是 5901。
双击打开下载完成的 VNC Viewer 客户端,点击 new connection,填入自己的服务器加上窗口的端口号,形如 ip:5901,根据提示输入之前设置的密码即可连接成功。
5. 设置 VNC Server 开机自启
根据前文的设置,我们已经可以远程桌面连接 Ubuntu 了,但是如果机器重启,VNC Server 并不会随之开机自启,下面记录为 VNC Server 配置开机自启。
我们将 VNC Server 定义为 systemd 服务,这样可以在需要的时候方便地启动、停止和重启服务。
首先,新建一个单元文件:/etc/systemd/system/vncserver@.service
sudo vi /etc/systemd/system/vncserver@.service
把以下代码拷贝,注意要修改用户名 User 和 PIDFILE 的路径信息:
[Unit]
Description=Start VNC Server at startup by ethanblog.com
After=syslog.target network.target
[Service]
Type=forking
User=root
PAMName=login
PIDFile=/root/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
保存文件后,使用以下代码重载 systemd 的单元文件:
sudo systemctl daemon-reload
启用 VNC Server 的单元文件,并通过 --now
参数同时启动服务:
sudo systemctl enable --now vncserver@1
符号 @ 后面的数字 1 代表窗口序号。
使用以下命令检查运行状态:
sudo systemctl status vncserver@1
如图,表示运行成功。