一、安装服务端

可以使用x11vnc或者tightvncserver或者tigervnc-standalone-server。
其中,x11vnc需要服务器上存在物理显示器才可以,否则会是黑屏。好处是一套配置可以提供给任意账号使用。
而tightvncserver或者tigervnc-standalone-server不需要服务器存在物理显示器。坏处是需要针对账号进行配置。

1.1 使用x11vnc

首先,使用下面命令安装x11vnc

sudo apt-get install x11vnc

接下来,使用下面的命令,生成一个密码文件

x11vnc -storepasswd
sudo mv $HOME/.vnc/passwd /etc/x11passwd
sudo chmod 444 /etc/x11passwd

然后,制作一个systemd服务x11vnc.service

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -auth /var/run/lightdm/root/:0 -once -loop -noxdamage -repeat -rfbauth /etc/x11passwd -rfbport 5900 -shared -nowf -nowcr -cursor most -noscr  

[Install]
WantedBy=multi-user.target

最后,使用下面的命令启动服务

sudo mv x11vnc.service /etc/systemd/system/x11vnc.service
sudo systemctl daemon-reload  # 加载x11vnc服务配置
sudo systemctl enable x11vnc  # 开启x11vnc服务自启动
sudo systemctl start x11vnc   # 启动x11vnc服务

1.2 tightvncserver或者tigervnc-standalone-server

sudo apt install tightvncserver
# 或者
sudo apt install tigervnc-standalone-server

注意:安装其中一个即可。

1.2.1 安装桌面环境

建议安装xfce4,理论上gnome或者kde也可以,不过我没有配置成功。

sudo apt install xfce4 xfonts-base xfonts-100dpi xfonts-75dpi fcitx5 fonts-noto-cjk dbus-x11

1.2.2 配置vnc服务密码

vncpasswd

根据提示输入密码即可,该密码是vnc登录时使用的密码,跟本地账号密码无任何关系。

1.2.3 配置启动脚本

更改$HOME/.vnc/xstartup, 改为以下内容:

#!/bin/sh

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN
export LC_CTYPE=zh_CN.UTF-8

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &

xfce4-session &
fcitx5 &

其中,fcitx是中文输入法。如果你使用的是其他输入法,可以根据情况更改。

1.2.4 配置启动服务

新建文件vncserver.USERNAME.service。内容为:

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=forking
User=USERNAME
ExecStart=vncserver -geometry 1920x1080 -alwaysshared :1

[Install]
WantedBy=multi-user.target

注意:

  1. USERNAME更换成你自己的用户名
  2. 如果多个用户都需要启动vnc服务,注意后面的:1改成:2之类的。
  3. :1对应的端口号为5901,:2对应的端口号是5902...

最后,配置并启动服务就可以了:

chmod a+x $HOME/.vnc/xstartup
sudo mv vncserver.USERNAME.service /etc/systemd/system

sudo systemctl daemon-reload  # 加载服务配置
sudo systemctl enable vncserver.USERNAME  # 开启服务自启动
sudo systemctl start vncserver.USERNAME   # 启动服务

二、安装客户端

下载VNC Viewer:https://www.realvnc.com/en/connect/download/viewer/

三、FAQ

  1. 如何修改密码?
    答:执行命令sudo x11vnc -storepasswd in /etc/x11passwd,然后重启x11vnc服务。

  2. 为什么无法遥控?
    答:可能是因为x11没有启动,可以通过命令sudo systemctl start lightgdm启动。