VNC虚拟网络计算,是一个图形桌面共享系统,可让您使用键盘和鼠标远程控制另一台计算机。

本教程介绍如何在CentOS 7安装VNC服务器。我们还将向您展示如何创建SSH隧道并安全地连接到VNC服务器。

在继续学习本教程之前,请确保您以root具有sudo权限的用户登录。

通常,Linux服务器都未安装桌面环境。如果您要使用vnc连接没有GUI的计算机,第一步就是是安装桌面环境。

CentOS软件仓库中有几种可用的桌面环境。在本教程中,我们将使用Xfce作为我们选择的桌面环境。

它是一种快速,稳定且轻巧的产品,非常适合在远程服务器使用。Xfce可在EPEL软件仓库中安装。

如果您未在服务器上启用EPEL,请运行命令sudo yum install epel-release。根据您的网络速度,下载和安装Xfce软件包可能需要一些时间。

sudo yum install epel-release

sudo yum groupinstall xfce

安装VNC服务器

CentOS 软件仓库中还有几种不同的VNC服务器,例如TightVNC ,TigerVNC和x11vnc。每个VNC服务器在速度和安全性方面都有其优点和缺点。

我们将使用TigerVNC,它是积极维护的高性能VNC服务器。

要在您的CentOS服务器安装TigerVNC,请运行命令sudo yum install tigervnc-server

当VNC服务器安装成后,请运行vncserver命令以创建初始配置并设置密码。

sudo yum install tigervnc-server

vncserver

系统将提示您输入并确认密码,以及是否将其设置为仅供查看的密码。Would you like to enter a view-only password (y/n)?n。

如果您选择设置仅查看密码,则用户将无法使用鼠标和键盘与VNC实例进行交互。

首次运行vncserver命令时,它将创建密码文件并将其存储在~/.vnc目录中。

You will require a password to access your desktops.

Password:
Verify:
Passwords don't match - try again
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
xauth:  file /root/.Xauthority does not exist

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

请注意上面输出中主机名后的:1,这是vnc服务器的显示端口好。vnc服务器将会监听TCP端口5901,即5900 + 1。

如果运行vncserver命令创建第二个实例,它将在使用下一个显示端口即:2,这意味着VNC服务器将会监听端口5902,即5900 + 2。

在继续下一步之前,请先停止VNC实例。在我们的例子中,VNC服务器在端口5901运行,显示端口是:1。因此停止显示端口:1的是命令vncserver -kill :1

vncserver -kill :1
Killing Xvnc process ID 1865

配置 VNC 服务器

现在在CentOS 7安装Xfce和TigerVNC,我们需要配置TigerVNC以使用Xfce。使用你喜欢的编辑器,编辑文件~/.vnc/xstartup

在本教程中,我们将使用vim编辑文件~/.vnc/xstartup。完成后,保存文件并退出vim

xstartup文件是TigerVNC服务器启动时运行的脚本,因此~/.vnc/xstartup文件还需要具有执行权限。运行chmod命令

vim ~/.vnc/xstartup
chmod u+x ~/.vnc/xstartup
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
# Assume either Gnome or KDE will be started by default when installed
# We want to kill the session automatically in this case when user logs out. In case you modify
# /etc/X11/xinit/Xclients or ~/.Xclients yourself to achieve a different result, then you should
# be responsible to modify below code to avoid that your session will be automatically killed
if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; then
    vncserver -kill $DISPLAY
fi
〜/.vnc/xstartup

如果需要更改VNC服务器启动参数,则可以使用vim创建~/.vnc/config的文件,并在每行添加一个选项。

geometry=1920x1084
dpi=96
~/.vnc/config

配置防火墙

如果你CentOS 8正在运行防火墙,并且使用firewalld作为防火墙管理工具。则需要打开端口5901的连接。

如果你显示端口是:2。则需要打开端口5902的连接,以此类推,请随时添加你需要允许的端口。

运行命令sudo firewall-cmd --add-port=5901/tcp --permanent

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

启动 VNC 服务器

现在我们完成VNC服务器的安装和配置,在CentOS 7 VNC服务器并没有作为Systemd的服务在后台运行。

因此,VNC服务器的启动关闭都是使用vncserver命令。要启动VNC服务器非常简单运行命令vncserver即可。

如果仅仅运行vncserver命令不够用时。你可能需要添加更多选项,运行vncserver --help命令查看更多选项。

vncserver

连接 VNC服务器

要连接到远程服务器,请打开Vncviewer,然后在VNC Server字段输入server_ip:5901

您现在可以使用键盘和鼠标从本地计算机开始在远程桌面上工作。如果你的Debian 9未安装tigervnc-viewer。

你可以简单运行命令sudo yum install tigervnc安装它。如果你的客户端计算机运行的是Windows系统,请点击此处下载tigervnc客户端

sudo yum install tigervnc

Linux macOS SSH隧道

VNC不是加密协议,可能会受到数据包嗅探。推荐的方法是创建SSH tunnel隧道,使用加密的数据连接到远程服务器。

如果您在计算机正在运行Linux,macOS或其他基于Unix的操作系统,则可以运行ssh命令轻松创建SSH隧道。

系统将提示您输入用户密码。不要忘记用您的用户名和服务器的IP地址替换usernameserver_ip_address

ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip

Windows SSH隧道

Windows用户可以使用PuTTY 。设置SSH tunnel隧道。打开Putty,然后在Host name or IP address字段中输入您的服务器IP地址。

Connection菜单下,展开SSH并选择Tunnels。在Source Port字段中输入VNC服务器端口5901

Destination字段中输入server_ip_address:5901,然后单击Add按钮。

返回Session页面以保存设置,保存后您无需每次都输入它们。要登录到远程服务器,请选择保存的会话,然后单击Open按钮。

结论

现在,您应该已经启动并运行VNC服务器,并且可以使用图形界面从本地计算机轻松管理CentOS 7服务器。如有任何疑问,请随时发表评论。