专栏首页ITCoder如何在 CentOS 8 上安装和配置 VNC

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

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 地址。

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

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

6.3 使用 Vncviewer 进行连接

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

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

我们使用 TigerVNC:

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

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

七、 总结

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 Ubuntu 18.04 上安装 VLC

    VLC 是一个最流行的开源多媒体播放器。它跨平台,并且实际上能够播放所有的多媒体文件以及 DVD,音频 CD 和其他不同的流协议。

    雪梦科技
  • 如何在 CentOS 7 上安装 VLC

    VLC 是一个流行的开源多媒体播放器和流媒体服务器。它跨平台,并且能播放几乎所有的多媒体文件,例如 DVD,音频 CD,以及不同的流媒体协议。

    雪梦科技
  • 如何在 CentOS 8 上使用 Vsftpd 配置 FTP 服务器

    FTP (文件传输协议) 是一个客户端-服务端 网络协议,它允许用户在本地客户端和远程服务器之间传输文件。

    雪梦科技
  • 如何在Debian 9上安装和配置VNC

    虚拟网络计算(VNC)是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它使得对于不熟悉命令行的用户更容易管理远程服务器上的文件,软件和...

    物花无语
  • 如何在Ubuntu 18.04上安装和配置VNC

    虚拟网络计算(VNC)是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它使得对于不熟悉命令行的用户更容易管理远程服务器上的文件,软件和...

    独木桥先生
  • 如何在Ubuntu 16.04上安装和配置VNC

    VNC或“虚拟网络计算”是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它使得对于不熟悉命令行的用户更容易管理远程服务器上的文件,软件...

    小铁匠米兰的v
  • 哪款安卓手机适合跑AI?移动端芯片性能评测论文出炉

    论文:AI Benchmark: Running Deep Neural Networks on Android Smartphones

    机器之心
  • 《深度学习革命》作者:GAN令我惊艳,现在的人们对AI操之过急了

    近日,计算神经科学家、《深度学习革命》一书作者Terrence Sejnowski在接受采访时表示,现在像“深度学习”和“神经网络”这样的流行语无处不在,但是大...

    新智元
  • 大咖 | 《深度学习革命》作者:人们对AI概念的理解存在偏差

    对基本概念的误解必然导致对人工智能的错误解读。因此“杀手AI”、“机器人使我们过时”等话题便应运而生。

    大数据文摘
  • 反洗钱与网络安全法案:同中有异?

    反洗钱(AML)的议程甚至早于我们对互联网的想象。自1970年美国签署“银行保密法”以来,该法案一直存在,这些法案要求更好的保存和报告记录。它的政策目标是:保护...

    林纾燊

扫码关注云+社区

领取腾讯云代金券