如何在 CentOS 8 上安装和配置 VNC,


image

本文最先发布在:https://www.itcoder.tech/posts/how-to-install-and-configure-vnc-on-centos-8/

Virtual Network Computing (VNC) 是一个图形桌面共享系统,它允许你使用本地的键盘和鼠标来远程控制另外一台计算机。

本文涉及如何在 CentOS 8 上安装和配置 VNC 的步骤。我们将会向你展示,如何通过 SSH 隧道技术来安全连接到 VNC 服务器。

一、前提条件。

想要继续这篇指南,你需要以拥有 sudo 权限的用户身份登录远程 CentOS 机器上。

二、安装桌面环境

通常,服务器没有安装任何的桌面环境。如果你拥有的一台机器没有 GUI,第一步就是安装它。否则,跳过这个步骤。

运行下面的命令来在你的远程机器上安装 Gnome,CentOS 8 下的默认桌面环境。

sudo dnf groupinstall "Server with GUI"

依赖你的系统,下载和安装 Gnome 软件包,以及依赖软件包需要花费一些时间。

三、安装 VNC 服务器

TigerVNC 是一个维护很活跃的开源高性能 VNC 服务器。它在默认的 CentOS 源仓库中可用,输入下面的命令,安装它:

sudo dnf install tigervnc-server

一旦 VNC 服务器被安装好,运行 vncserver 命令来创建初始化设置,并且设置密码。运行下面的命令时,不要使用 sudo

vncserver

你将会被提示输入并且确认一个密码,并且是否设置一个仅仅查看的密码。如果你选择设置一个仅仅查看的密码,这个用户将不能通过键盘和鼠标和 VNC 实例进行交互。

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/linuxize/.Xauthority does not exist

New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log

第一次运行vncserver命令,它将会在~/.vnc目录下创建并且存储密码文件。如果该文件夹没有被创建,那么首先会创建该文件夹。

请留意上面主机名后面的:1。则表示 正在运行的 VNC 服务器上的显示端口号。在我们的例子中,服务器运行在 TCP 端口5901(5900+1)。如果你创建了第二个实例,他将会运行到下一个闲置的端口上,例如::2,这意味着,服务器运行在端口号5902(5900+2)上。

在和 VNC 服务器上工作的时候,最重要的一点就是,:X就是显示端口号,即:5900+X

在继续下面的步骤之前,第一步通过使用vncserver命令加上-kill选项,停止 VNC 实例。在我们的例子中,服务器运行在端口号 5901(:1),因此,停止它,运行:

vncserver -kill :1

输出如下:

Killing Xvnc process ID 19681

四、配置 VNC 服务器

现在 Gnome 和 TigerVNC 都被安装在远程 CentOS 机器上,下一步就是配置 TigerVNC 去使用 Gnome。VNC 服务器使用~/.vnc/xstartup文件,在创建新桌面的时候,启动应用。打开这个文件:

vim ~/.vnc/xstartup

并且编辑如下:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

保存并且关闭文件。当你启动或者重启 TigerVNC 服务器的时候,上面的脚本将会被自动执行。

如果你想传递额外的选项给 VNC 服务器,打开~/.vnc/config文件,并且每行添加一个选项。最常用的选项都被列在文件中。取消注释,并且按照你的喜好来修改。

这里是一个例子:

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

五、创建一个 Systemd Unit 文件

Unit files 允许你很容易地启动,停止,和重启服务。通常情况下,存储用户 unit 文件的最好位置是~/.config/systemd/user。创建文件夹:

mkdir -p ~/.config/systemd/user

拷贝默认的 vncserver unit 文件:

cp /usr/lib/systemd/user/vncserver@.service ~/.config/systemd/user/

通知 systemd,一个新的用户 unit 文件已经存在:

systemctl --user daemon-reload

启动 VNC 服务,并且启用开机启动:

systemctl --user enable vncserver@:1.service --now

@:后面的数字1定义了 VNC 服务将会监听的显示端口,我们将会使用1,这意味着 VNC 服务器将会监听我们在前面讨论过的5901端口。

启用 lingering 以便在用户没有登录时,用户服务可以保持开机启动并且保持运行状态。

loginctl enable-linger

验证服务是否成功启动,运行:

systemctl --user status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/home/linuxize/.config/systemd/user/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-30 22:14:08 UTC; 2s ago
  Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
  Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/user@1000.service/vncserver.slice/vncserver@:1.service
  ...

六、连接到 VNC 服务器

VNC 不是一个加密协议,并且可以被包嗅探工具定位分析。推荐的访问方式,就是从你本地机器的5901端口到远程服务器的同一个端口之间 创建一个 SSH 隧道。

6.1 在 Linux 和 macOS 系统上设置 SSH 隧道

如果 你在你的机器上运行着 Linux,macOS 或者其他类Unix 操作系统,你可以很容易地使用下面的 ssh 命令来创建一个隧道:

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

你将会被提示输入用户密码。

不要忘记将usernameserver_ip_address替换成你自己的用户名和远程服务器 IP 地址。

6.2 在 Windows 上设置 SSH 隧道

Windows 上使用 Putty 来设置 SSH 隧道。

打开 Putty 并且在Host name or IP address文本域处输入你的服务器 IP 地址。

image

Connection菜单下,展开SSH并且选择Tunnels。在文本域Source Port处输入 VNC 服务器端口(5901),在文本域Destination处输入server_ip_address:5901,并且像下图一样点击Add按钮:

image

返回Session页面保存设置,以便你不用每次都需要输入它们。想要登录远程服务器,选择保存的会话,并且点击Open按钮.

6.3 使用 Vncviewer 进行连接

想要连接你的远程服务器,打开你的 VNC 查看器并且输入localhost:5901

你可以使用任何 VNC 查看器,例如: TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre, 和 VNC Viewer for Google Chrome。

我们使用 TigerVNC:

image

出现提示的时候,输入密码,你将会看到默认的 Gnome 桌面。它应该像下面这样:

image

就这些!现在你已经可以从你的本地机器上使用你的键盘和鼠标,在你的远程桌面上进行工作。

七、 总结

我们已经向你展示,如何在一个远程的 CentOS 8 机器上设置一个 VNC 服务器并且连接上去。

想要为多用户创建显示器,重复同样的步骤。创建初始化配置,使用vncserver命令设置密码,并且使用不同的端口创建一个新服务。






如果你有任何疑问,请通过以下方式联系我们:

微信: sn0wdr1am86

itcoder_weixin_jpeg

微信群:
加上面的微信,备注微信群

QQ: 3217680847

itcoder_qq_jpeg

QQ 群: 82695646
itcoder_qqqun_jpeg

相关内容