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 或本地终端以 rootsudo 用户身份登录到你的 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 服务器。

修改后的 ExecStartExecStop 行通常如下:​

[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 addrifconfig 命令找到它的 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 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容