Linux下的VNC
一、安装服务端
可以使用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
注意:
- USERNAME更换成你自己的用户名
- 如果多个用户都需要启动vnc服务,注意后面的
:1
改成:2
之类的。 :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
-
如何修改密码?
答:执行命令sudo x11vnc -storepasswd in /etc/x11passwd
,然后重启x11vnc服务。 -
为什么无法遥控?
答:可能是因为x11没有启动,可以通过命令sudo systemctl start lightgdm
启动。