Linux之VNC工具安装及远程连接过程

好的,在 Linux 系统中,VNC 是一个非常实用的远程桌面工具。下面我将为您提供一个完整、详细且适用于主流发行版(如 CentOS/RHEL、Ubuntu/Debian)​的安装和配置指南。

图片[1]_Linux之VNC工具安装及远程连接过程_知途无界

我们将使用 ​TigerVNC​ 作为 VNC 服务器,因为它性能好、安全性高且易于配置。整个过程分为四个主要部分:

  1. ​安装 VNC 服务器和客户端​
  2. ​配置 VNC 服务器(核心步骤)​​
  3. ​启动并设置 VNC 服务为开机自启​
  4. ​使用 VNC 客户端进行远程连接​

方法概览

我们将为指定的 Linux 用户创建一个独立的 VNC 会话(例如,一个名为 myvncuser 的用户)。这种方式安全且互不干扰。我们将:

  1. 安装 TigerVNC 服务器。
  2. 为用户设置 VNC 密码。
  3. 配置一个 ~/.vnc/xstartup 脚本,以启动用户熟悉的桌面环境(如 GNOME, KDE, XFCE)。
  4. 启动 VNC 服务器实例(例如,显示端口 :1)。
  5. 使用 VNC 客户端(如 RealVNC, TightVNC)连接。

第一部分:安装 VNC 服务器和客户端

首先,通过 SSH 或本地终端以 root 或 sudo 用户身份登录到你的 Linux 系统。

1.1 在 RHEL / CentOS / Fedora 上安装

这些系统使用 dnf (或 yum) 包管理器。

# 更新系统包(可选,但推荐)
sudo dnf update -y

# 安装 TigerVNC 服务器和客户端
sudo dnf install tigervnc-server tigervnc -y

# 安装你想要的桌面环境(如果系统尚未安装)
# 例如,安装 GNOME(CentOS 8+/RHEL 8+ 默认)
sudo dnf groupinstall "Server with GUI" -y
# 或者安装 XFCE(轻量级,推荐用于服务器)
# sudo dnf groupinstall "Xfce" -y

1.2 在 Debian / Ubuntu 上安装

这些系统使用 apt 包管理器。

# 更新系统包列表
sudo apt update

# 安装 TigerVNC 服务器和客户端
sudo apt install tigervnc-standalone-server tigervnc-common -y

# 安装你想要的桌面环境
# 例如,安装 XFCE(非常流行且轻量)
sudo apt install xfce4 xfce4-goodies -y
# 或者安装完整的 GNOME 桌面
# sudo apt install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal -y

第二部分:配置 VNC 服务器(核心步骤)

现在,我们将为一个普通用户配置 VNC。请不要直接用 root 用户运行 VNC 会话,这存在安全风险。

2.1 切换到目标用户并设置 VNC 密码

假设我们要为 myvncuser 这个用户配置 VNC。

# 切换到目标用户
su - myvncuser

# 为该用户设置 VNC 专用密码
# 这个命令会在 ~/.vnc/ 目录下创建一个名为 passwd 的文件
vncpasswd

执行 vncpasswd 后,会提示你输入并确认密码。这个密码是客户端连接时使用的。​注意:​​ VNC 密码长度最长为 8 个字符。如果输入超过 8 位,只有前 8 位有效。

你还可以设置一个仅限查看的密码​(View-only password),用它可以连接但无法进行任何操作(只能看)。按需设置即可。

完成后,你会看到 ~/.vnc/passwd 文件被创建。

2.2 创建和编辑 xstartup 启动脚本

这个脚本决定了你 VNC 会话启动后会看到什么样的桌面环境。

# 确保在用户家目录下
cd ~

# 创建 .vnc 目录(如果 vncpasswd 没自动创建的话)
mkdir -p .vnc

# 编辑 xstartup 文件
vim ~/.vnc/xstartup

根据你的桌面环境,将以下内容之一复制粘贴到 xstartup 文件中。

​选项 A:适用于 XFCE 桌面 (推荐用于服务器)​​

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

​选项 B:适用于 GNOME 桌面​

#!/bin/bash
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
gnome-session &

​选项 C:适用于 KDE Plasma 桌面​

#!/bin/bash
export XDG_SESSION_TYPE=x11
export XDG_CURRENT_DESKTOP=KDE
startplasma-x11 &

​重要:​​ 给 xstartup 文件添加可执行权限!

chmod +x ~/.vnc/xstartup

第三部分:启动 VNC 服务并设置开机自启

现在我们来启动 VNC 服务器。VNC 的显示端口号从 :1 开始,对应 TCP 端口 5901。:2 对应 5902,以此类推。

3.1 手动启动 VNC 服务器(用于测试)

我们先手动启动一次,看看有没有错误。

# 语法: vncserver <display_number> -geometry <分辨率> -depth <色深>
# 例如,启动显示号为 :1 的会话,分辨率为 1920x1080,色深 24位
vncserver :1 -geometry 1920x1080 -depth 24

如果一切正常,你会看到类似下面的输出:

New 'myhostname:1 (myvncuser)' desktop is myhostname:1

Starting applications specified in /home/myvncuser/.vnc/xstartup
Log file is /home/myvncuser/.vnc/myhostname:1.log

现在,VNC 服务器已经在 5901 端口上运行了。

​注意:​​ 如果启动失败,查看日志文件 ~/.vnc/myhostname:1.log 来排查错误(例如,桌面环境未正确安装或 xstartup 脚本有误)。

3.2 (推荐)配置 systemd 服务以实现开机自启

手动启动的 VNC 在系统重启后会失效。我们需要为它创建一个 systemd 服务单元文件。

​首先,停止刚才手动启动的 VNC 会话:​​

vncserver -kill :1

​然后,复制 VNC 服务模板文件:​​
大多数系统自带了针对不同用户的 VNC 服务模板。

# 复制模板文件,文件名格式通常为 vncserver@.service
# @符号后面的数字就是显示号,我们会用这个作为变量
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

​编辑服务文件:​​

sudo vim /etc/systemd/system/vncserver@:1.service

找到以 ExecStart 开头的行,并进行修改。默认的模板可能比较复杂,我们把它简化。核心是让它用我们的 myvncuser 用户去启动显示号 :1 的 VNC 服务器。

​修改后的 ExecStart 和 ExecStop 行通常如下:​​

[Unit]
Description=TigerVNC Server for user %u on display :%i
After=syslog.target network.target

[Service]
Type=forking
User=myvncuser  # <--- !!!修改为你自己的用户名!!!
PAMName=login
PIDFile=/home/%u/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -geometry 1920x1080 -depth 24 -localhost no
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

​关键修改说明:​​

  • User=myvncuser: 指定运行此服务的用户。
  • ExecStart=/usr/bin/vncserver :%i ...: %i 会被 systemd 替换为 @ 后面的数字(这里是 1)。我们添加了 -geometry 和 -depth 参数来确保启动时使用正确的分辨率和色深。-localhost no 允许非本地连接(如果只想本地连接则用 yes 并通过 SSH 隧道)。

​重新加载 systemd 并启用服务:​​

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用服务,使其在系统启动时自动运行
# 这里启用的是我们创建的 vncserver@:1.service 文件
sudo systemctl enable vncserver@:1.service

# 立即启动 VNC 服务
sudo systemctl start vncserver@:1.service

# 检查服务状态,确保它是 running 状态
sudo systemctl status vncserver@:1.service

如果状态显示为 active (running),恭喜你,VNC 服务已经成功配置为开机自启!


第四部分:使用 VNC 客户端进行远程连接

现在,你可以在你的 Windows、macOS 或另一台 Linux 电脑上使用 VNC 客户端进行连接了。

4.1 查找服务器 IP 地址

在你的 Linux VNC 服务器上,使用 ip addr 或 ifconfig 命令找到它的 IP 地址。

ip addr show

假设服务器的 IP 地址是 192.168.1.100。

4.2 配置防火墙(如果启用)

VNC 使用的是 5900 + 显示号 的端口。对于显示号 :1,端口是 5901。你需要在防火墙中开放这个端口。

​在 RHEL/CentOS/Fedora (firewalld) 上:​​

sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload

​在 Debian/Ubuntu (ufw) 上:​​

sudo ufw allow 5901/tcp

4.3 使用 VNC 客户端连接

  1. 下载并安装一个 VNC 客户端,如:
  2. 打开 VNC 客户端,在地址栏中输入: <server_ip_address>:1 或者 <server_ip_address>::5901 例如:192.168.1.100:1
  3. 点击“连接”,客户端会提示你输入之前用 vncpasswd 设置的密码。
  4. 成功验证后,你将看到 Linux 系统的远程桌面!

安全建议:使用 SSH 隧道

直接通过 5901 端口暴露 VNC 流量是不安全的,因为 VNC 协议本身不加密。最佳实践是通过 SSH 隧道转发 VNC 端口。

​操作方法(在客户端电脑上执行):​​

# -L 参数将本地的 5901 端口转发到远程服务器的 5901 端口
# user@remote_host 是你的 Linux 服务器的用户名和 IP
ssh -L 5901:localhost:5901 user@192.168.1.100

然后,在你的 VNC 客户端中,不再连接 192.168.1.100:1,而是连接 ​**localhost:1​ 或 ​127.0.0.1:1**。SSH 会自动将加密后的流量转发到服务器。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞27 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容