Linux局域网屏幕共享

简单记录下局域网下,Linux的X11界面如何共享到其他设备使用,并配置开机自动启动功能。

如果是从外网连接,直接用ToDesk或者向日葵即可(注意:向日葵不支持Ubuntu24.04),用本地局域网连接推荐用WIFI6,带宽更大

局域网屏幕共享

此处有两种常用工具:NoMachine和VNC,这里推荐用VNC服务器,延迟相比NoMachine更低些

NoMachine使用方法非常简单,直接在两台电脑上都下载NoMachine,服务端打开server,客户端刷新即可看到可连接的设备,缺点是经常卡住不懂,需要手动刷新页面非常麻烦

VNC服务端

参考CSDN - VNC服务端比对 (vncserver vs x11vnc)

VNC的服务端有两种常用的版本,分别为

  • vncserver(全称为TigerVNC):创建一个全新的独立桌面(适合无图形界面的服务器)
  • x11vnc:直接共享当前屏幕内容(适合临时远程控制已有桌面的电脑)

分别的安装方法为:

# TigerVNC
sudo apt install tigervnc-standalone-server
# x11vnc
sudo apt install x11vnc

服务端启动VNC服务后都会在本机上创建一个端口,他们的默认端口都是5900, 5901, ...,当主机没有固定的显示屏时,推荐使用vncserver

vncserver配置开机自启(在没有直连显示器时使用,稳定,不会有黑屏)

直接启动

首先介绍vncserver直接使用的方法,他会创建一个新的DISPLAY窗口,不会和已有的DISPLAY窗口冲突并且不会共享窗口,先用vncpasswd配置VNC登陆密码

❯ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

创建新窗口

❯ vncserver :1

New Xtigervnc server 'kuavo-NUC12WSKi7:2 (kuavo)' on port 5902 for display :2.
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/kuavo/.vnc/passwd :2 to connect to the VNC server.

查看当前以创建窗口

❯ vncserver --list

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      RFB UNIX PATH   PROCESS ID #    SERVER
1               5901                            38001           Xtigervnc

如果创建的是:1则对应端口为5901,后续客户端连接对应的端口即可,创建:N(N为正整数)则对应端口为590N:0通常为默认的窗口界面,如果没有连主显示屏可能是黑屏)

关闭:1号窗口:vncserver -kill :1

配置开机自启

tigervnc已经为我们配置好开机自启文件了,我们只需要学会使用即可,cat /usr/lib/systemd/system/tigervncserver@.service查看已经为我们配置好的启动文件,使用方法就是在/etc/tigervnc/vncserver.users中加入一个名称即可

sudo vim /etc/tigervnc/vncserver.users

# 在文件的最下面一行加入, 例如我电脑的用户名为kuavo
:1=kuavo

如果之前启动了:1窗口,先将其关闭vncserver -kill :1,使用systemctl启动:

sudo systemctl start tigervncserver@:1.service  # 启动服务
sudo systemctl status tigervncserver@:1.service  # 查看服务的启动状态, 显示active (running)就说明正常
sudo systemctl enable tigervncserver@:1.service  # 创建开机自启

x11vnc配置开机自启(在有直连的显示屏时使用)

参考ubuntu18.04安装x11vnc远程登录并设置开机自启

直接启动

# 安装x11vnc
sudo apt-get install x11vnc -y
# 设置VNC密码
sudo x11vnc -storepasswd /etc/x11vnc.pass
# 给予权限
sudo chmod 777 /etc/x11vnc.pass
# 创建启动文件
sudo vim /etc/init/x11vnc.conf

在安装完x11vnc后,按功能键(Win键)后输入x11vnc server可以打开可视化配置界面,第一个界面配置端口,用默认5900即可,在第二个界面点Accept Connection,然后就启动VNC服务了,可以用于调试是否可以联通,我们以下的自启动方法无需该界面进行配置

启动文件如下

# x11vnc.conf
exec /usr/bin/x11vnc -auth guess -capslock -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

测试启动文件能否使用

source /etc/init/x11vnc.conf

配置开机自启

配置开机自启动

sudo vim /etc/init.d/x11vnc.sh

启动脚本内容如下

#!/bin/bash
source /etc/init/x11vnc.conf

修改权限

sudo chmod 777 /etc/init.d/x11vnc.sh

添加到自启动项中,按左下角功能键(Win键),输入startup application,打开窗口点击右侧Add,修改内容如下后保存:

如果不想用GUI可以在~/.conf/autostart下创建x11vnc.desktop文件,内容如下

X11VNC startup application

VNC客户端

VNC的客户端也有两种选择,Windows推荐用RealVNC效果可能更好些(Linux也可以用,但是界面比较简陋),更推荐的是用网页版的noVNC,直接通过网页即可访问,功能也很全。

noVNC服务端自动启动

一个直接用网页即可访问VNC的服务端/客户端,非常方便,需要启动一个服务端创建网页,然后客户端就可以直接访问主机的网页啦,使用方法如下:

cd ~/Programs  # 进入到你想保存软件的位置
git clone https://github.com/novnc/noVNC.git
# 启动客户端网页界面, vnc端口为默认为5900, 网页访问端口默认为6080
./noVNC/utils/novnc_proxy --vnc localhost:5900

ifconfig查看本机的IP地址,例如我的是192.168.31.103,则在局域网中的另一台电脑或手机可通过http://192.168.31.103:6080/vnc.html直接访问可视化界面

自动启动配置如下,还是先创建启动脚本

cat /etc/init.d/novnc.sh  # 启动脚本内容如下
#!/bin/bash
<YOUR_PATH>/noVNC/utils/novnc_proxy --vnc localhost:5900

注意上述路径请替换为你的,并测试一下能否运行source /etc/init.d/novnc.sh

记得添加访问权限sudo chmod 777 /etc/init.d/novnc.sh

类似上述设置自启动脚本的方法,添加到自启动项中,按左下角功能键(Win键),输入startup application,打开窗口点击右侧Add,修改内容如下后保存:
noVNC startup application

RealVNC

RealVNC/Download中下载并安装,在打开APP界面,直接输入IP:5900即可直接连上(Linux的缺点是无法复制文本内容,有点麻烦)


Linux局域网屏幕共享
https://wty-yy.xyz/posts/47970/
作者
wty
发布于
2025年5月15日
许可协议