要在 Windows 系统中通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器,可以按照以下步骤来配置和使用 VNC 进行远程桌面访问。
在 CentOS 或 Ubuntu 服务器上配置 VNC 服务
步骤 1:安装 VNC 服务器和桌面环境
对于 CentOS:
-
安装桌面环境(GNOME 或其他):
bashsudo yum groupinstall "Server with GUI"
-
安装 VNC 服务器:
bashsudo yum install tigervnc-server
对于 Ubuntu:
-
安装桌面环境(如果没有安装):
bashsudo apt update sudo apt install ubuntu-desktop
-
安装 VNC 服务器:
bashsudo apt install tigervnc-standalone-server
步骤 2:设置 VNC 密码
运行以下命令来设置 VNC 密码:
bash
vncpasswd
它会要求输入并确认密码。
步骤 3:配置 VNC 服务
-
编辑 VNC 服务器配置文件:
bashsudo nano /etc/systemd/system/vncserver@:1.service
-
在文件中添加以下内容:
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
运行网络服务。
-
保存并退出 (
Ctrl+X
,然后按Y
保存)。 -
设置 VNC 服务器为开机自启:
bashsudo systemctl daemon-reload sudo systemctl enable vncserver@:1.service
-
启动 VNC 服务:
bashsudo 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 服务配置文件
-
打开或创建 VNC 服务的配置文件。例如,如果使用显示编号
2
(对应端口 5902),可以修改如下配置:对于 CentOS:
bashsudo nano /etc/systemd/system/vncserver@:2.service
对于 Ubuntu:
bashsudo nano ~/.vnc/xstartup
-
将以下内容添加或修改(此示例使用
: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
端口。 -
保存并退出编辑器 (
Ctrl+X
,然后按Y
保存)。
步骤 2:重新加载 systemd 配置并启动 VNC
-
重新加载 systemd 配置:
bashsudo systemctl daemon-reload
-
启动新的 VNC 服务(在显示编号 2 上):
bashsudo systemctl start vncserver@:2.service
-
如果你希望 VNC 在启动时自动运行,可以启用服务:
bashsudo 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:使用新的端口进行连接
- 在 VNC Viewer 中输入新端口号。例如,如果你设置了显示编号
2
,则在 VNC Viewer 中输入IP地址:5902
进行连接。 - 输入 VNC 密码,成功连接到新的 VNC 会话。
更改端口号注意事项
- 你可以使用任意显示编号(从 1 到 n)来生成对应的 VNC 端口,端口号等于
5900 + 显示编号
。 - 确保新的端口没有被其他应用占用。
- 通过防火墙允许访问你配置的端口。
在 Windows 上使用 VNC 客户端进行连接
步骤 1:下载和安装 VNC Viewer
- 下载 VNC Viewer 适用于 Windows 的客户端。
- 安装并打开 VNC Viewer。
步骤 2:连接到服务器
- 在 VNC Viewer 的地址栏中输入
IP地址:5901
,例如192.168.1.100:5901
。 - 点击 Connect,它会提示你输入 VNC 密码(之前在服务器上设置的密码)。
- 成功连接后,你应该能够看到远程服务器的桌面。
其他注意事项
- 确保防火墙和网络允许 VNC 的 5901 端口通过。
- 如果需要通过公网访问,建议通过 SSH 隧道或 VPN 增强安全性,因为 VNC 本身的安全性较低。
这样就可以从 Windows 通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器上的桌面环境了!