---
author: Pradeep Kumar
category: 技术
comments_data:
- date: '2020-01-02 10:11:01'
  message: "在执行systemctl start vncserver@:1.service命令之后，提示出错，用systemctl status vncserver@:1.service查看后提示：<br
    />\r\n● vncserver@:1.service - Remote Desktop VNC Service<br />\r\n&nbsp; &nbsp;Loaded:
    loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: disabled)<br
    />\r\n&nbsp; &nbsp;Active: failed (Result: exit-code) since Thu 2020-01-02 10:05:37
    CST; 7s ago<br />\r\n&nbsp;&nbsp;Process: 108612 ExecStartPre=/bin/sh -c /usr/bin/vncserver
    -kill :1 &gt; /dev/null 2&gt;&amp;1 || : (code=exited, status=200/CHDIR)<br />\r\n1月
    02 10:05:37 centos8 systemd[1]:"
  postip: 101.86.189.202
  username: 来自上海的 Chrome 69.0|Windows 7 用户
- date: '2020-02-04 12:55:38'
  message: 不要用Root帐户
  postip: 183.197.22.98
  username: 来自河北唐山的 Firefox 68.0|Windows 10 用户
- date: '2020-03-08 00:18:40'
  message: vnc连接后黑屏是为什么
  postip: 113.89.97.124
  username: 来自广东深圳的 Chrome 75.0|Windows 10 用户
- date: '2020-03-08 23:47:00'
  message: 同样是黑屏
  postip: 223.77.115.93
  username: 来自湖北的 Chrome 80.0|Windows 10 用户
- date: '2020-03-08 23:47:53'
  message: 换个端口试一试。vncserver@2.service
  postip: 223.77.115.93
  username: 来自湖北的 Chrome 80.0|Windows 10 用户
- date: '2020-03-17 15:34:15'
  message: "黑屏<br />\r\n```<br />\r\n-- Unit vncserver@:1.service has finished shutting
    down.<br />\r\nMar 17 14:51:45 octave.sh su[14532]: (to vnc_user) root on pts/0<br
    />\r\nMar 17 14:51:45 octave.sh su[14532]: pam_systemd(su-l:session): Cannot create
    session: Already running in a session or user slice<br />\r\nMar 17 14:51:45 octave.sh
    su[14532]: pam_unix(su-l:session): session opened for user vnc_user by root(uid=0)<br
    />\r\nMar 17 14:52:11 octave.sh polkitd[753]: Registered Authentication Agent
    for unix-process:14567:1448779 (system bus name :1.2191 [/"
  postip: 101.249.30.32
  username: 来自西藏的 Chrome Mobile 58.0|Android 5.1 用户
- date: '2020-03-17 15:36:56'
  message: "[14532]: pam_systemd(su-l:session): Cannot create session: Already running
    in a session or user slice<br />\r\nMar 17 14:51:45 octave.sh su[14532]: pam_unix(su-l:session):
    session opened for user vnc_user by root(uid=0)<br />\r\nMar 17 14:52:11 octave.sh
    polkitd[753]: Registered Authentication Agent for unix-process:14567:1448779 (system
    bus name :1.2191 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent,
    locale zh_CN.UTF-8)<br />\r\nMar 17 14:52:36 octave.sh polkit"
  postip: 101.249.30.32
  username: 来自西藏的 Chrome Mobile 58.0|Android 5.1 用户
- date: '2020-03-17 15:41:06'
  message: "session opened for user vnc_user by root(uid=0)<br />\r\nMar 17 14:52:11
    octave.sh polkitd[753]: Registered Authentication Agent for unix-process:14567:1448779
    (system bus name :1.2191 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object
    path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)<br />\r\nMar
    17 14:52:36 octave.sh polkit-agent-helper-1[14585]: pam_unix(polkit-1:auth): authentication
    failure; logname= uid=1000 euid=0 tty= ruser=root rhost=&nbsp;&nbsp;user=root<br
    />\r\nMar 17 14:52:36 octave.sh polki"
  postip: 101.249.30.32
  username: 来自西藏的 Chrome 58.0|GNU/Linux 用户
- date: '2020-03-17 15:45:53'
  message: 用户下直接运行vncserver :1 -xstartup ~/.vnc/xstartup，可以进到桌面。
  postip: 101.249.30.32
  username: 来自西藏的 Chrome 58.0|GNU/Linux 用户
- date: '2020-03-31 22:32:49'
  message: VMware 下安装的 CentOS 8.1，装完后VNC连黑屏？？？
  postip: 182.139.148.248
  username: 来自四川成都的 Chrome 78.0|Windows 10 用户
- date: '2020-04-09 14:05:33'
  message: 黑屏
  postip: 113.68.252.151
  username: 来自广东广州的 Chrome 80.0|Windows 10 用户
- date: '2020-05-17 14:24:02'
  message: 普通用户还是黑屏
  postip: 58.221.177.190
  username: 来自江苏南通的 Chrome 81.0|Windows 10 用户
- date: '2020-08-18 11:12:37'
  message: "VMware下黑屏的，我贡献一下我的配置解决了黑屏，直接服务器安装的，直接用lib的配置也不会黑屏。<br />\r\n<br />\r\n<br
    />\r\n------------------------------------------------------------------------<br
    />\r\n<br />\r\n[Unit]<br />\r\nDescription=Remote desktop service (VNC)<br />\r\nAfter=syslog.target
    network.target<br />\r\n<br />\r\n[Service]<br />\r\nType=forking<br />\r\nUser=root<br
    />\r\n<br />\r\n# Clean any existing files in /tmp/.X11-unix environment<br />\r\nExecStartPre=/bin/sh
    -c '/usr/bin/vncserver -kill %i &gt; /dev/null 2&gt;&amp;1 || :'<br />\r\nExecStart=/sbin/runuser
    -l root -c &quot;/usr/bin/vncserver %i&quot;<br />\r\nPIDFile=/root/.vnc/%H%"
  postip: 171.221.225.16
  username: 来自四川成都的 Chrome 78.0|Windows 10 用户
- date: '2020-08-18 11:13:48'
  message: "PIDFile=/root/.vnc/%H%i.pid<br />\r\nExecStop=/bin/sh -c '/usr/bin/vncserver
    -kill %i &gt; /dev/null 2&gt;&amp;1 || :'<br />\r\n<br />\r\n[Install]<br />\r\nWantedBy=multi-user.target"
  postip: 171.221.225.16
  username: 来自四川成都的 Chrome 78.0|Windows 10 用户
- date: '2020-08-18 11:16:01'
  message: "另外上面作者的命令顺序反了，折腾半天。应该是先启用，再启动。。。<br />\r\n<br />\r\nsystemctl enable vncserver@:1.service<br
    />\r\nsystemctl start vncserver@:1.service"
  postip: 171.221.225.16
  username: 来自四川成都的 Chrome 78.0|Windows 10 用户
- date: '2020-08-18 11:16:46'
  message: by ayurep
  postip: 171.221.225.16
  username: 来自四川成都的 Chrome 78.0|Windows 10 用户
- date: '2020-11-15 11:31:35'
  message: 你好，我按照你的方法能解决黑屏问题了，但是又遇到了终端打开不了的问题，vnc连接的activities下面点击terminal无效果，但是终端实际在vmware里面被打开了，不知道是怎么回事
  postip: 58.214.36.212
  username: 来自江苏无锡的 Chrome 86.0|Windows 10 用户
- date: '2021-04-19 15:25:46'
  message: "enable 表示设置开机自启动<br />\r\nstart 表示开启服务<br />\r\n<br />\r\n所以你说的&quot;启用&quot;是错误的..."
  postip: 124.160.94.202
  username: 来自浙江宁波的 Firefox 87.0|Windows 10 用户
- date: '2021-05-20 18:53:10'
  message: "# systemctl status vncserver@:1.service<br />\r\n● vncserver@:1.service
    - Remote Desktop VNC Service<br />\r\n&nbsp; &nbsp;Loaded: loaded (/etc/systemd/system/vncserver@.service;
    enabled; vendor preset: disabled)<br />\r\n&nbsp; &nbsp;Active: inactive (dead)
    since Thu 2021-05-20 18:51:18 CST; 6s ago<br />\r\n&nbsp;&nbsp;Process: 37048
    ExecStop=/usr/bin/vncserver -kill :1 (code=exited, status=0/SUCCESS)<br />\r\n&nbsp;&nbsp;Process:
    37046 ExecStart=/usr/bin/vncserver -autokill :1 (code=exited, status=0/SUCCESS)<br
    />\r\n&nbsp;&nbsp;Process: 37043 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill
    :1"
  postip: 211.143.174.133
  username: 来自福建龙岩的 Chrome 90.0|Windows 10 用户
- date: '2021-05-20 18:54:15'
  message: "Process: 37043 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 &gt;
    /dev/null 2&gt;&amp;1 || : (code=exited, status=0/SUCCESS)<br />\r\n<br />\r\n5月
    20 18:51:18&nbsp;&nbsp;systemd[1]: Starting Remote Desktop VNC Service...<br />\r\n5月
    20 18:51:18&nbsp;&nbsp;systemd[1]: vncserver@:1.service: Succeeded.<br />\r\n5月
    20 18:51:18&nbsp;&nbsp;systemd[1]: Started Remote Desktop VNC Service.<br />\r\n<br
    />\r\n服务起不来，不知道什么原因"
  postip: 211.143.174.133
  username: 来自福建龙岩的 Chrome 90.0|Windows 10 用户
- date: '2021-05-20 18:55:08'
  message: 这两条命令顺序无所谓的吧
  postip: 211.143.174.133
  username: 来自福建龙岩的 Chrome 90.0|Windows 10 用户
- date: '2022-02-22 16:48:57'
  message: "1、这篇文章vnc在写systemd 服务单元配置时原理上有问题，vnc提供提供两种启动机制，一种是直接vncserver &lt;:display&gt;
    一种是vncsession user &lt;:display&gt; ，前者是用于用户手动启动，后者用于服务方式启动。<br />\r\n2、vnc安装后已经生成了服务单元模板文件
    xxx@.service . 路径为：/usr/lib/systemd/system/vncserver@.service ，可直接使用此文件或者拷贝此文件到
    /etc/systemd/system/目录下进行自定义修改<br />\r\n3、man vncsession 可以查看用法和使用文档。"
  postip: 61.128.161.154
  username: 来自重庆的 Firefox 97.0|Windows 10 用户
- date: '2022-02-22 16:55:57'
  message: 此种配置方法，针对普通用户用 systemd user unit 方式倒是推荐使用，但是直接配置成系统服务不建议如此使用。
  postip: 61.128.161.154
  username: 来自重庆的 Firefox 97.0|Windows 10 用户
- date: '2022-04-22 21:56:01'
  message: 为什么连接成功后无法输入锁屏密码呢？输入密码后自动消失了
  postip: 222.247.225.137
  username: 来自湖南长沙的 Chrome 100.0|Windows 10 用户
count:
  commentnum: 24
  favtimes: 4
  likes: 0
  sharetimes: 0
  viewnum: 30873
date: '2019-10-14 12:02:00'
editorchoice: false
excerpt: 在 Centos 8 和 RHEL 8 系统中，默认未安装 VNC 服务器，它需要手动安装。在本文中，我们将通过简单的分步指南，介绍如何在 Centos
  8 / RHEL 8 上安装 VNC 服务器。
fromurl: https://www.linuxtechi.com/install-configure-vnc-server-centos8-rhel8/
id: 11458
islctt: true
largepic: /images/p/201910/14/120057n9t849m3uzswhkg8.jpg
permalink: /article-11458-1.html
pic: /data/attachment/album/201910/14/120057n9t849m3uzswhkg8.jpg.thumb.jpg
related: []
reviewer: wxy
selector: lujun9972
summary: 在 Centos 8 和 RHEL 8 系统中，默认未安装 VNC 服务器，它需要手动安装。在本文中，我们将通过简单的分步指南，介绍如何在 Centos
  8 / RHEL 8 上安装 VNC 服务器。
tags:
- VNC
thumb: false
title: 如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
titlepic: true
translator: geekpi
updated: '2019-10-14 12:02:00'
---

![](/data/attachment/album/201910/14/120057n9t849m3uzswhkg8.jpg)


VNC（<ruby> 虚拟网络计算 <rt>  Virtual Network Computing </rt></ruby>）服务器是基于 GUI 的桌面共享平台，它可让你访问远程桌面计算机。在 Centos 8 和 RHEL 8 系统中，默认未安装 VNC 服务器，它需要手动安装。在本文中，我们将通过简单的分步指南，介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器。


### 在 Centos 8 / RHEL 8 上安装 VNC 服务器的先决要求


要在你的系统中安装 VNC 服务器，请确保你的系统满足以下要求：


* CentOS 8 / RHEL 8
* GNOME 桌面环境
* root 用户权限
* DNF / YUM 软件包仓库


### 在 Centos 8 / RHEL 8 上安装 VNC 服务器的分步指导


#### 步骤 1）安装 GNOME 桌面环境


在 CentOS 8 / RHEL 8 中安装 VNC 服务器之前，请确保已安装了桌面环境（DE）。如果已经安装了 GNOME 桌面或安装了 GUI 支持，那么可以跳过此步骤。


在 CentOS 8 / RHEL 8 中，GNOME 是默认的桌面环境。如果你的系统中没有它，请使用以下命令进行安装：



```
[root@linuxtechi ~]# dnf groupinstall "workstation"
或者
[root@linuxtechi ~]# dnf groupinstall "Server with GUI
```

成功安装上面的包后，请运行以下命令启用图形模式：



```
[root@linuxtechi ~]# systemctl set-default graphical
```

现在重启系统，进入 GNOME 登录页面（LCTT 译注：你可以通过切换运行态来进入图形界面）。



```
[root@linuxtechi ~]# reboot
```

重启后，请取消注释 `/etc/gdm/custom.conf` 中的 `WaylandEnable=false`，以使通过 vnc 进行的远程桌面会话请求由 GNOME 桌面的 xorg 处理，来代替 Wayland 显示管理器。


注意： Wayland 是 GNOME 中的默认显示管理器 （GDM），并且未配置用于处理 X.org 等远程渲染的 API。


#### 步骤 2）安装 VNC 服务器（tigervnc-server）


接下来，我们将安装 VNC 服务器，有很多 VNC 服务器可以选择，出于安装目的，我们将安装 `TigerVNC 服务器`。它是最受欢迎的 VNC 服务器之一，并且高性能还独立于平台，它使用户可以轻松地与远程计算机进行交互。


现在，使用以下命令安装 TigerVNC 服务器：



```
[root@linuxtechi ~]# dnf install tigervnc-server tigervnc-server-module -y
```

#### 步骤 3）为本地用户设置 VNC 密码


假设我们希望用户 `pkumar` 使用 VNC 进行远程桌面会话，然后切换到该用户并使用 `vncpasswd` 命令设置其密码，



```
[root@linuxtechi ~]# su - pkumar
[root@linuxtechi ~]$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
[root@linuxtechi ~]$
[root@linuxtechi ~]$ exit
logout
[root@linuxtechi ~]#
```

#### 步骤 4）设置 VNC 服务器配置文件


下一步是配置 VNC 服务器配置文件。创建含以下内容的 `/etc/systemd/system/vncserver@.service`，以便为上面的本地用户 `pkumar` 启动 tigervnc-server 的服务。



```
[root@linuxtechi ~]# vim /etc/systemd/system/vncserver@.service
[Unit]
Description=Remote Desktop VNC Service
After=syslog.target network.target

[Service]
Type=forking
WorkingDirectory=/home/pkumar
User=pkumar
Group=pkumar

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -autokill %i
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target
```

保存并退出文件，


注意：替换上面文件中的用户名为你自己的。


默认情况下，VNC 服务器在 tcp 端口 5900+n 上监听，其中 n 是显示端口号，如果显示端口号为 “1”，那么 VNC 服务器将在 TCP 端口 5901 上监听其请求。


#### 步骤 5）启动 VNC 服务并允许防火墙中的端口


我将显示端口号设置为 1，因此请使用以下命令在显示端口号 “1” 上启动并启用 vnc 服务，



```
[root@linuxtechi ~]# systemctl daemon-reload
[root@linuxtechi ~]# systemctl start vncserver@:1.service
[root@linuxtechi ~]# systemctl enable vncserver@:1.service
Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /etc/systemd/system/vncserver@.service.
[root@linuxtechi ~]#
```

使用下面的 `netstat` 或 `ss` 命令来验证 VNC 服务器是否开始监听 5901 上的请求，



```
[root@linuxtechi ~]# netstat -tunlp | grep 5901
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      8169/Xvnc
tcp6       0      0 :::5901                 :::*                    LISTEN      8169/Xvnc
[root@linuxtechi ~]# ss -tunlp | grep -i 5901
tcp   LISTEN  0       5                    0.0.0.0:5901           0.0.0.0:*      users:(("Xvnc",pid=8169,fd=6))                    
tcp   LISTEN  0       5                       [::]:5901              [::]:*      users:(("Xvnc",pid=8169,fd=7))                    
[root@linuxtechi ~]#
```

使用下面的 `systemctl` 命令验证 VNC 服务器的状态，



```
[root@linuxtechi ~]# systemctl status vncserver@:1.service
```

![vncserver-status-centos8-rhel8](/data/attachment/album/201910/14/120203mn7yuodtyww45r55.jpg)


上面命令的输出确认在 tcp 端口 5901 上成功启动了 VNC。使用以下命令在系统防火墙中允许 VNC 服务器端口 “5901”，



```
[root@linuxtechi ~]# firewall-cmd --permanent --add-port=5901/tcp
success
[root@linuxtechi ~]# firewall-cmd --reload
success
[root@linuxtechi ~]#
```

#### 步骤 6）连接到远程桌面会话


现在，我们已经准备就绪，可以查看远程桌面连接是否正常工作。要访问远程桌面，请在 Windows / Linux 工作站中启动 VNC Viewer，然后输入 VNC 服务器的 IP 地址和端口号，然后按回车。


![VNC-Viewer-Windows10](/data/attachment/album/201910/14/120203amvu9lpzepdrvr2m.jpg)


接下来，它将询问你的 VNC 密码。输入你先前为本地用户创建的密码，然后单击 “OK” 继续。


![VNC-Viewer-Connect-CentOS8-RHEL8-VNC-Server](/data/attachment/album/201910/14/120205jnkuqnxfnjpjqj5y.jpg)


现在你可以看到远程桌面，


![VNC-Desktop-Screen-CentOS8](/data/attachment/album/201910/14/120205dj2bncobbr6brj7n.jpg)


就是这样，你已经在 Centos 8 / RHEL 8 中成功安装了 VNC 服务器。


### 总结


希望这篇在 Centos 8 / RHEL 8 上安装 VNC 服务器的分步指南为你提供了轻松设置 VNC 服务器并访问远程桌面的所有信息。请在下面的评论栏中提供你的意见和建议。下篇文章再见。谢谢再见！！！




---


via: <https://www.linuxtechi.com/install-configure-vnc-server-centos8-rhel8/>


作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出