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

2023-11-09

在本教程中,我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤。我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器。

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

先决条件#

在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户。我们假设您以名为的用户身份登录linuxize.

安装Xfce桌面环境#

CentOS 服务器安装通常不附带安装桌面环境,因此我们将从安装一个轻量级桌面环境开始。

我们将安装Xfce。它快速、稳定且占用系统资源少,非常适合在远程服务器上使用。

Xfce 软件包可在EPEL 存储库。如果您的服务器上未启用存储库,您可以通过键入以下内容来启用它:

sudo yum install epel-release

添加存储库后,使用以下命令在 CentOS 上安装 Xfce:

sudo yum groupinstall xfce

根据您的系统,下载和安装 Xfce 软件包和依赖项可能需要一些时间。

安装VNC服务器#

我们将使用 TigerVNC 作为我们选择的 VNC 服务器。TigerVNC是一个积极维护的高性能开源 VNC 服务器。

键入以下命令在 CentOS 服务器上安装 TigerVNC:

sudo yum 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之后hostname在上面的输出中。这表示 vnc 服务器运行的显示端口号。在我们的例子中,服务器在 TCP 端口上运行5901(5900+1)。如果您使用以下命令创建第二个实例vncserver它将在下一个自由端口上运行,即:2,这意味着服务器正在端口上运行5902(5900+2)。

重要的是要记住,在使用 VNC 服务器时,:X是一个显示端口,指的是5900+X.

在继续下一步之前,首先使用以下命令停止 VNC 实例vncserver命令与-kill选项和服务器编号作为参数。在本例中,服务器在端口 5901 上运行(:1),所以我们将停止它:

vncserver -kill :1
Killing Xvnc process ID 2432

配置VNC服务器#

现在 Xfce 和 TigerVNC 都已安装在服务器上,下一步是配置 TigerVNC 以使用 Xfce。为此,请打开以下文件:

nano ~/.vnc/xstartup

并将最后一行更改为exec /etc/X11/xinit/xinitrc to exec startxfce4:

〜/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

保存并关闭文件。每当您启动或重新启动 TigerVNC 服务器时,上面的脚本都会自动执行。

如果您需要通过其他选项到VNC服务器,打开~/.vnc/config文件并每行添加一个选项。文件中列出了最常见的选项。取消注释并根据您的喜好进行修改。

这是一个例子:

〜/.vnc/config
# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
dpi=96

创建 Systemd 单元文件#

我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动、停止和重新启动 VNC 服务,就像任何其他 systemd 服务一样。

使用以下命令复制 vncserver 单元文件cp命令:

sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

使用文本编辑器打开文件,编辑以黄色突出显示的行并将“linuxize”替换为您的实际用户名:

sudo nano /etc/systemd/system/vncserver@\:1.service
/etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=linuxize
Group=linuxize

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %I
PIDFile=/home/linuxize/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

保存并关闭文件。通知 systemd 我们创建了一个新的单元文件:

sudo systemctl daemon-reload

下一步是使用以下命令启用单元文件:

sudo systemctl enable vncserver@:1.service

号码1之后@符号定义 VNC 服务将在其上运行的显示端口。在此示例中,这是默认值1,VNC服务器将监听端口5901,正如我们在上一节中讨论的那样。

通过执行以下命令启动 VNC 服务:

sudo systemctl start vncserver@:1.service

验证服务是否已成功启动:

sudo systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
  Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
  Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 923 (Xvnc)
 ...

连接到 VNC 服务器#

VNC 不是加密协议,可能会受到数据包嗅探的影响。推荐的方法是创建一个SSH隧道它将安全地将流量从端口 5901 上的本地计算机转发到同一端口上的服务器。

在 Linux 和 macOS 上设置 SSH 隧道#

如果您的计算机上运行 Linux、macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建隧道ssh命令:

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

系统将提示您输入用户密码。

不要忘记更换username and server_ip_address使用您的用户名和服务器的 IP 地址。

在 Windows 上设置 SSH 隧道#

如果您运行 Windows,则可以使用以下命令设置 SSH 隧道PuTTY SSH 客户端 .

打开 Putty 并在地址栏中输入您的服务器 IP 地址Host name or IP address field.

在下面Connection菜单,展开SSH并选择Tunnels。输入 VNC 服务器端口(5901) 在里面Source Port字段并输入server_ip_address:5901 in the Destination字段并单击Add按钮如下图所示:

返回到Session页面保存设置,这样您就不需要每次都输入它们。

要登录远程服务器,请选择已保存的会话,然后单击Open button

使用 Vncviewer 连接#

现在您已经设置了 SSH 隧道,是时候打开 Vncviewer 并连接到 VNC 服务器了:localhost:5901.

您可以使用任何 VNC 查看器,例如 TigerVNC、TightVNC、RealVNC、UltraVNC、Vinagre 和 VNC Viewer谷歌浏览器 .

在此示例中,我们将使用 TigerVNC。打开 VNC 查看器,输入localhost:5901,然后单击Connect button.

出现提示时输入密码,您应该会看到默认的 Xfce 桌面。它应该看起来像这样:

您现在可以开始使用键盘和鼠标从本地计算机与远程 XFCE 桌面进行交互。

结论#

到现在为止,您应该已经启动并运行了一个 VNC 服务器,并且您可以使用图形界面轻松管理您的 CentOS 7 服务器。

要将 VNC 服务器配置为为多个用户启动显示,请使用以下命令创建初始配置并设置密码:vncserver命令并使用不同的端口创建新的服务文件。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 7 上安装和配置 VNC 的相关文章

  • VMware 最新版 - 虚拟机安装、激活、Centos安装、XShell 连接虚拟机、网络配置(全流程)

    目录 一 VMware 从安装到使用全流程 1 1 安装和激活 1 2 下载 Centos 镜像 以 7 为例 1 3 创建虚拟机 1 4 网络配置 1 5 验证网络是否可用 一 VMware 从安装到使用全流程 1 1 安装和激活 a 从
  • Centos 7 - openjdk8 的 jfx 库在哪里?

    我有centos 7 1 我安装了openjdk8和openjdk devel8 但是 当我尝试在 netbeans 中编译我的 jfx 应用程序时 我得到包 javafx 不存在 经过一番调查 我发现jdk中没有jfxrt jar 除了
  • Vagrant 与 apache 同步文件夹权限问题

    我正在运行 Centos6 4 机器 Running vagrant upVagrant 文件中没有同步文件夹配置就可以了 我可以通过以下方式访问我的主机http localhost 8080它显示 Apache 页面 我可以在中创建ind
  • ai_socktype 不支持 Servname

    我正在使用 Vagrant 运行 Centos 虚拟机 机器似乎运行正常 但是当我尝试同步 Perforce 时 我可以看到以下错误 vagrant vagrant c5 x86 64 perforce p4 sync f Perforce
  • 通过 os.system 推送 [重复]

    这个问题在这里已经有答案了 我正在使用 crontab 为我的 Minecraft 服务器运行维护脚本 大多数时候它工作正常 除非 crontab 尝试使用重新启动脚本 如果我手动运行重新启动脚本 则不会有任何问题 因为我相信它与路径名有关
  • gcc 找不到 cc1plus

    我正在尝试在 CentOS 6 上安装 python 包 pandas 但我遇到了 gcc 编译器问题 sudo pip install pandas creating build temp linux x86 64 2 7 pandas
  • shell_exec 不在后台运行,还有其他解决方案吗?

    我在 CentOS 上的 apache 中使用 php 我需要为用户提供服务 他们可以通过点击删除大文件 尝试使用 shell exec 但它不在后台运行 它运行并让用户等待 我的命令 D command rm rf 视频 Mdelete
  • nfsnobody 用户权限

    我已经在两台 CentOS 6 64 机器之间设置了 NFS 文件共享 在服务器上 共享的文件夹最初由 root 用户拥有 在客户端上 它显示为 nfsnobody 所有 当我尝试从客户端写入该文件夹时 出现权限错误 因此 我将服务器上的文
  • Centos 7 Postgres 服务的环境变量

    最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题 它尝试查找未初始化的默认数据目录 var lib pgsql 9 3 data 因此触发了这些错误 问题似乎是 Centos 7 上的服务启动器删除了所有环境
  • 命令“PassengerAppRoot”无效,可能拼写错误或由服务器配置中未包含的模块定义

    我已按照中给出的每一个安装步骤进行操作在 Linux Unix 生产服务器上安装 Passenger Apache 适用于 Node js 应用程序 Red Hat 6 CentOS 6 带 RPM https www phusionpas
  • 增加 CentOS 上的 Docker 容器存储大小

    我想增加 Docker 容器的磁盘空间 这是 docker info 的输出 Containers 3 Running 3 Paused 0 Stopped 0 Images 4 Server Version 19 03 5 Storage
  • 在我的 CentOS 机器上找不到wireshark init.lua

    所以我试图在我的 CentOS 7 服务器上获取一个与 tshark 一起使用的脚本 但我遇到了问题 该脚本在我的Windows笔记本电脑上运行良好 我只是将其放在appdata的plugins文件夹中 但我在linux上找不到类似的位置
  • 在 xCode 界面生成器中,是否可以使用 control+drag 将视图元素与文件所有者连接起来?

    通过 TightVNC 连接到 Mac Mini 来处理 iPhone 应用程序 Interface Builder 中用于将视图元素连接到文件所有者的控制 拖动操作不起作用 我没有看到连接线 当我将键盘 鼠标和显示器连接到 Mini 并直
  • Docker CentOS 映像不会自动启动 httpd

    我正在尝试使用 Apache 和 PHP 程序运行一个简单的 Docker 映像 如果我跑的话效果很好 docker run t i p 80 80 my httpd bin bash 然后手动启动Apache service httpd
  • apache centos 上的多个 php

    如何在 Centos 6 5 上同时运行多个 php 版本 就是这样 要求Centos 6 5 可能适用于 6 6 和 7 Apache Apache 2 2 15 可能与其他版本一起使用 本指南安装和使用FASTCGI 请参阅替代安装的注
  • crontab 作业的 STDOUT 和 STDERR 输出在哪里

    有谁知道 CentOS 中正常 crontab 作业输出的 STDOUT 和 STDERR 在哪里 我检查了 var log cron文件 但它只记录了 cron 作业执行的时间和命令 没有找到 STDOUT 或 STDERR 内容 看看
  • PCRE 库版本太旧

    Bug Genie 3 需要 PCRE 库 8 0 或更高版本 你有 版本 7 8 2008 09 05 将您的系统更新到最新版本 你常用的来源 在我查看问题并尝试通过以下步骤更新我的 PCRE 库后 wget the latest sou
  • mod_mono 在新安装的 centos 上出现 EOF 错误

    我全新安装了 Centos 6 3 已完全更新 我已经从源安装了 mono xsp 和 mod mono 每个包都完美编译 它们都以 usr local mono 前缀安装 因此所有内容都位于 usr local mono 下 我已将 In
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • git-http-backend 与 AuthzUnixGroup 无法正常工作

    我正在尝试在 CentOS 6 机器上的 Apache 2 2 上设置一个 git 存储库 并安装了 git 我尝试过许多不同的方向 但我却不知所措 我目前的情况包括能够clone正常 但完全无法推动 似乎我无法使身份验证位正常工作 因为我

随机推荐

  • 如何在 CentOS 7 上安装和使用 FFmpeg

    FFmpeg 是一个用于处理多媒体文件的免费开源工具集合 它包含一组共享的音频和视频库 例如libavcodec libavformat和libavutil 使用 FFmpeg 您可以在各种视频和音频格式之间进行转换 设置采样率 捕获流音频
  • 如何在 Debian 10 上安装 Python 3.8

    Python 是世界上使用最广泛的编程语言之一 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 是一种非常通用的编程语言 它可用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 Debian
  • 如何在 Debian 9 上安装 Visual Studio Code

    视觉工作室代码是微软开发的免费开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 可以使用扩展来扩展 Visual Studio Code 功能 本教程介绍如何使用 VS Cod
  • 使用 PostfixAdmin 设置邮件服务器

    Postfix Admin 是一个基于 Web 的界面 允许用户配置和管理基于 Postfix 的电子邮件服务器 使用 Postfix Admin 您可以创建和管理多个虚拟域 用户和别名 这是该系列的第一篇文章设置和配置邮件服务器其中涵盖了
  • 如何在 CentOS 8 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 构建的 在本指南中 我们将讨论如何在 CentOS 8 上安装 PHP 7 2 7 3 或 7
  • 在 Debian 10 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书自颁发之日起 90 天内有效 并
  • 如何在 CentOS 7 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 可让您创建复杂的 Web 应用程序 在本教程中 我们将向您展示如何在 CentOS 7 计算机上安装 PostgreSQL 的两种不同方法
  • 如何在 Ubuntu 18.04 上安装 MariaDB

    MariaDB 是一个开源 多线程关系数据库管理系统 向后兼容 MySQL 的替代品 它由以下机构维护和开发MariaDB基金会包括MySQL的一些原始开发人员 在本教程中 我们将向您展示如何在 Ubuntu 18 04 计算机上安装 Ma
  • 在 CentOS 7 上使用 yum-cron 配置自动更新

    定期更新 CentOS 系统是整个系统安全最重要的方面之一 如果您不使用最新的安全补丁更新操作系统的软件包 您的计算机就会容易受到攻击 如果您管理多台 CentOS 机器 手动更新系统软件包可能会非常耗时 即使您管理单个 CentOS 安装
  • 在 Vim / Vi 中查找和替换

    本文介绍如何在 Vim Vi 中查找和替换文本 Vim 是最流行的命令行文本编辑器 它预装在 macOS 和大多数 Linux 发行版上 在 Vim 中查找和替换文本既快速又简单 基本查找和替换 在 Vim 中 您可以使用以下命令查找和替换
  • 安装和配置 Roundcube Webmail

    这是最后一部分设置和配置邮件服务器系列 其中我们将介绍如何安装和配置 Roundcube Webmail Roundcube 是一个基于 Web 的 IMAP 电子邮件客户端 具有用 PHP 编写的非常直观且现代的用户界面 要使用 Roun
  • Linux 中的自由命令

    我的 Linux 系统上有多少可用 RAM 内存 是否有足够的可用内存来安装和运行新应用程序 在Linux系统中 您可以使用free命令获取有关系统内存使用情况的详细报告 The free命令提供有关物理总量和swap内存 以及空闲和已用内
  • 如何在 Linux 中查找/获取您的 IP 地址

    在排除网络问题 设置新连接或配置防火墙时 了解设备的 IP 地址非常重要 IP 地址可分为两类 公共地址和私有地址 公共IP是唯一的并且可以从互联网访问的IP地址 私有 IP 地址保留供私有网络内部使用 而不直接暴露于 Internet 此
  • Python if..else 语句

    决策是计算机编程最基本的概念之一 Python 支持其他语言中常见的流程控制语句 但进行了一些修改 这if控制语句是最基本和众所周知的语句之一 用于根据特定条件执行代码 在这篇文章中 我们将回顾一下基础知识ifPython 中的语句 Pyt
  • Linux 中的 Echo 命令及示例

    The echo命令是Linux中最基本 最常用的命令之一 参数传递给echo打印到标准输出 echo常用于 shell 脚本中显示消息或输出其他命令的结果 回显命令 echo是 Bash 和大多数其他流行 shell 如 Zsh 和 Ks
  • 如何检查你的 Ubuntu 版本

    当您第一次登录 Ubuntu 系统时 在进行任何工作之前 最好检查一下计算机上运行的 Ubuntu 版本 新的 Ubuntu 版本每六个月发布一次 而 LTS 长期支持 版本每两年发布一次 LTS 版本在桌面和服务器上均受支持五年 其他标准
  • 如何在 Debian 9 上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 Docker 是容器技术事实上的标准 它是 DevOps 工程师及其持续集成和交付管道的重要工具 在本教程中 我们将指导您
  • Linux 中的定位命令

    在 Linux 上工作时最常见的操作之一是搜索文件和目录 Linux 系统上有多个命令允许您搜索文件 其中 find 和locate 是最常用的命令 The locate命令是按名称搜索文件和目录的最快 最简单的方法 在这篇文章中 我们将解
  • Linux 中的 Du 命令

    The du命令是 磁盘使用情况 的缩写 报告给定文件或目录使用的估计磁盘空间量 它对于查找占用大量磁盘空间的文件和目录非常有用 如何使用du命令 的一般语法为du命令如下 du OPTIONS FILE 如果给定FILE是一个目录 du将
  • 如何在 CentOS 7 上安装和配置 VNC

    在本教程中 我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计