要在 Windows 系统中通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器,可以按照以下步骤来配置和使用 VNC 进行远程桌面访问

要在 Windows 系统中通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器,可以按照以下步骤来配置和使用 VNC 进行远程桌面访问。

在 CentOS 或 Ubuntu 服务器上配置 VNC 服务

步骤 1:安装 VNC 服务器和桌面环境

对于 CentOS:

  1. 安装桌面环境(GNOME 或其他):

    bash 复制代码
    sudo yum groupinstall "Server with GUI"
  2. 安装 VNC 服务器:

    bash 复制代码
    sudo yum install tigervnc-server

对于 Ubuntu:

  1. 安装桌面环境(如果没有安装):

    bash 复制代码
    sudo apt update
    sudo apt install ubuntu-desktop
  2. 安装 VNC 服务器:

    bash 复制代码
    sudo apt install tigervnc-standalone-server
步骤 2:设置 VNC 密码

运行以下命令来设置 VNC 密码:

bash 复制代码
vncpasswd

它会要求输入并确认密码。

步骤 3:配置 VNC 服务
  1. 编辑 VNC 服务器配置文件:

    bash 复制代码
    sudo nano /etc/systemd/system/vncserver@:1.service
  2. 在文件中添加以下内容:

ini 复制代码
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/root
ExecStart=/usr/bin/vncserver :1
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=multi-user.target
  • 安全性问题 :VNC 服务直接作为 root 运行会暴露整个系统于潜在的安全风险。如果 VNC 服务被入侵,攻击者将获得对整个系统的完全控制权限。

  • 最小权限原则 :最佳实践是只赋予进程它们所需的最低权限。通过使用非 root 用户来运行 VNC 服务,即使服务被入侵,潜在的风险也可以被限制在用户权限范围内。

    更安全的做法是使用普通用户运行,并根据需要配置 sudo 权限或 polkit 策略来允许用户执行需要提升权限的操作。尽量避免长期以 root 运行网络服务。

  1. 保存并退出 (Ctrl+X,然后按 Y 保存)。

  2. 设置 VNC 服务器为开机自启:

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl enable vncserver@:1.service
  3. 启动 VNC 服务:

    bash 复制代码
    sudo systemctl start vncserver@:1.service
步骤 4:开启防火墙端口

VNC 默认使用 5901 端口,你可以通过以下命令开放该端口:

对于 CentOS:

bash 复制代码
sudo firewall-cmd --permanent --zone=public --add-port=5901/tcp
sudo firewall-cmd --reload

对于 Ubuntu:

bash 复制代码
sudo ufw allow 5901/tcp

修改 VNC 服务器的默认端口(通常是 5901),可以按照以下步骤进行配置。默认情况下,VNC 服务器的端口是 5900 + 显示编号(display number),即如果显示编号为 1,那么使用的端口是 5901

步骤 1:修改 VNC 服务配置文件

  1. 打开或创建 VNC 服务的配置文件。例如,如果使用显示编号 2(对应端口 5902),可以修改如下配置:

    对于 CentOS:

    bash 复制代码
    sudo nano /etc/systemd/system/vncserver@:2.service

    对于 Ubuntu:

    bash 复制代码
    sudo nano ~/.vnc/xstartup
  2. 将以下内容添加或修改(此示例使用 :2 显示编号):

    ini 复制代码
    [Unit]
    Description=Remote desktop service (VNC)
    After=syslog.target network.target
    
    [Service]
    Type=forking
    User=<your-username>
    Group=<your-group>
    WorkingDirectory=/home/<your-username>
    ExecStart=/usr/bin/vncserver :2
    PIDFile=/home/<your-username>/.vnc/%H%i.pid
    ExecStop=/usr/bin/vncserver -kill :2
    
    [Install]
    WantedBy=multi-user.target

    这里的 :2 是显示编号,VNC 服务器将会监听 5902 端口。

  3. 保存并退出编辑器 (Ctrl+X,然后按 Y 保存)。

步骤 2:重新加载 systemd 配置并启动 VNC

  1. 重新加载 systemd 配置:

    bash 复制代码
    sudo systemctl daemon-reload
  2. 启动新的 VNC 服务(在显示编号 2 上):

    bash 复制代码
    sudo systemctl start vncserver@:2.service
  3. 如果你希望 VNC 在启动时自动运行,可以启用服务:

    bash 复制代码
    sudo systemctl enable vncserver@:2.service

步骤 3:开放新端口

如果你修改了显示编号并相应地改变了端口号(例如,显示编号 2,使用端口 5902),需要确保防火墙允许新的端口。

对于 CentOS:

bash 复制代码
sudo firewall-cmd --permanent --zone=public --add-port=5902/tcp
sudo firewall-cmd --reload

对于 Ubuntu:

bash 复制代码
sudo ufw allow 5902/tcp

步骤 4:使用新的端口进行连接

  1. 在 VNC Viewer 中输入新端口号。例如,如果你设置了显示编号 2,则在 VNC Viewer 中输入 IP地址:5902 进行连接。
  2. 输入 VNC 密码,成功连接到新的 VNC 会话。

更改端口号注意事项

  • 你可以使用任意显示编号(从 1 到 n)来生成对应的 VNC 端口,端口号等于 5900 + 显示编号
  • 确保新的端口没有被其他应用占用。
  • 通过防火墙允许访问你配置的端口。

在 Windows 上使用 VNC 客户端进行连接

步骤 1:下载和安装 VNC Viewer
  1. 下载 VNC Viewer 适用于 Windows 的客户端。
  2. 安装并打开 VNC Viewer。
步骤 2:连接到服务器
  1. 在 VNC Viewer 的地址栏中输入 IP地址:5901,例如 192.168.1.100:5901
  2. 点击 Connect,它会提示你输入 VNC 密码(之前在服务器上设置的密码)。
  3. 成功连接后,你应该能够看到远程服务器的桌面。

其他注意事项

  • 确保防火墙和网络允许 VNC 的 5901 端口通过。
  • 如果需要通过公网访问,建议通过 SSH 隧道或 VPN 增强安全性,因为 VNC 本身的安全性较低。

这样就可以从 Windows 通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器上的桌面环境了!

相关推荐
自由的dream几秒前
Linux的桌面
linux
xiaozhiwise31 分钟前
Makefile 之 自动化变量
linux
Kkooe1 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒2 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
Yang.992 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
我不瘦但很逗2 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows
谭震鸿2 小时前
Zookeeper集群搭建Centos环境下
分布式·zookeeper·centos
意疏3 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师3 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb