VNC(Virtual Network Computing)是跨平台的遠程桌面協議,允許在網絡上查看並控制遠程計算機的圖形桌面。常用實現有 RealVNC、TightVNC、TigerVNC 等。
# CentOS/RHEL
sudo dnf install tigervnc-server
# Ubuntu/Debian
sudo apt install tigervnc-standalone-server
# Fedora
sudo dnf install tigervnc-server
vncpasswd
# 輸入兩次密碼(僅前 8 位有效),可選設置只讀密碼
密碼文件存放在 ~/.vnc/passwd。
# 默認顯示號 :1 (端口 5901)
vncserver :1
# 指定幾何分辨率與色深
vncserver :2 -geometry 1920x1080 -depth 24
# 指定配置文件(可選)
vncserver :3 -config ~/.vnc/config
每個用戶可獨立啟動多個 VNC 會話,顯示號 :1、:2 對應端口 5901、5902。
| 客戶端類型 | 連接地址格式 | 示例 |
|---|---|---|
| Linux VNC Viewer | vncviewer host:display | vncviewer 192.168.1.100:1 |
| Windows VNC Viewer | GUI 輸入 host:display | 192.168.1.100:1 |
| 瀏覽器 | https://host:5800+display | https://192.168.1.100:5801 (需 Java/noVNC 支持) |
# 修改密碼
vncpasswd
# 停止指定會話(僅會話擁有者可執行,root 也需用 kill)
vncserver -kill :1
vncserver -kill :2
# 列出當前用戶運行的會話
vncserver -list
# 設置不斷開現有連接(拒絕新連接)
vncserver -dontdisconnect :1
# 允許同一顯示號多客戶端共享
vncserver -alwaysshared :1
適用於服務端處於 NAT/防火牆後、客戶端有公網 IP 的場景:
vncviewer -listen(默認端口 5500)vncconnect -display :1 客戶端IP# 配置 systemd 服務(以 :1 為例)
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sudo sed -i 's//your_username/g' /etc/systemd/system/vncserver@:1.service
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service
ssh -L 5901:localhost:5901 user@remote,本地連接 localhost:1~/.vnc/config 添加 localhost=1~/.vnc/xstartup 是否正確啟動桌面環境(如 exec gnome-session &)setxkbmap us 或對應佈局autocutsel 並在 xstartup 中啟動