一、服务器
1. 安装和启动
服务器安装vnc-server:
apt install tigervnc-standalone-server
启动(这里使用的是gnome桌面):
tigervncserver -xstartup /usr/bin/gnome-session -geometry 1280x960 -localhost no :1
这里的:1
是display,客户端连接时要指定这个。
然后记得开放防火墙端口!!!
2. 配置开机自启
vim /etc/rc.local
在里面加上:
#!/bin/bash
# 这里的username要根据实际填写,会调起user的桌面环境。
# root用户一般没有桌面环境。
source /home/<username>/.profile
sudo -u <username> tigervncserver -kill :1 2>/dev/null
sudo -u <username> tigervncserver -xstartup /usr/bin/gnome-session -geometry 1920x1080 -localhost no :1
## 如果不设置可执行权限,开机不会运行rc.local
chmod 755 rc.local
这里手动source
了.profile
,因为VNC没有自动加载它。
发现VNC中桌面的语言设置不会生效,怀疑是漏加载了gnome的某些配置。
在.profile
补上export LANG="zh_CN.UTF-8"
可设置桌面环境为中文。
二、客户端
客户端安装vnc-viewer:
apt install tigervnc-viewer
连接:
xtigervncviewer 192.168.1.104:1
参考博客:
Debian11.6配置noVNC做远程桌面服务
怎么指定端口?答自GPT:
在配置 VNC 服务器时,默认情况下,VNC 使用的端口范围是 5900 + display number。例如,如果你使用 :1 作为 display,那么 VNC 服务器将监听 5901 端口。如果你使用 :2,则监听 5902 端口,以此类推。
- 确认 VNC 服务器监听的端口
根据你的配置,你使用了 :1,所以 VNC 服务器默认监听 5901 端口。你可以通过以下命令确认:
netstat -tuln | grep 5901
或者使用 ss 命令:
ss -tuln | grep 5901
如果端口没有监听,可能是 VNC 服务器没有正确启动。
- 开放防火墙端口
为了允许客户端连接,你需要在服务器上开放 VNC 使用的端口。假设你使用的是 ufw 防火墙,可以执行以下命令:
sudo ufw allow 5901/tcp
如果你使用的是 iptables,可以执行:
sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
然后保存 iptables 规则(如果使用 iptables):
sudo iptables-save | sudo tee /etc/iptables/rules.v4
3. 修改 VNC 服务器端口(可选)
如果你想使用不同的端口,可以修改 VNC 服务器的配置。默认情况下,VNC 使用 :1 对应 5901 端口,:2 对应 5902 端口,依此类推。如果你想使用非默认端口,可以通过修改 ~/.vnc/xstartup 或启动脚本中的 DISPLAY 变量来实现,但这通常不推荐,因为 VNC 客户端默认期望 :1 对应 5901 端口。
- 客户端连接时指定端口
在客户端连接时,你可以通过 IP:port 的形式指定端口。例如,如果你的服务器 IP 是 192.168.1.104,并且 VNC 服务器监听 5901 端口,你可以这样连接:
xtigervncviewer 192.168.1.104:1
或者直接指定端口号(如果客户端支持):
xtigervncviewer 192.168.1.104:5901
不过,通常 :1 会被自动转换为 5901 端口,所以直接使用 :1 即可。
- 配置 VNC 服务器监听特定 IP(可选)
如果你希望 VNC 服务器只监听特定的 IP 地址,可以在启动 VNC 服务器时指定 -localhost no 来允许远程连接,并确保防火墙规则正确配置。如果你希望 VNC 服务器只监听特定的 IP 地址,可以修改启动命令,例如:
tigervncserver -xstartup /usr/bin/gnome-session -geometry 1920x1080 -localhost no -rfbport 5901 -interface 192.168.1.104 :1
其中 -interface 192.168.1.104 指定了 VNC 服务器只监听 192.168.1.104 这个 IP 地址。
总结
默认情况下,VNC 使用 5900 + display number 端口。
确保防火墙开放了相应的端口。
客户端连接时可以通过 IP:port 或 IP:display 的形式指定端口。
如果需要,可以修改 VNC 服务器的启动配置来监听特定的 IP 或端口。