【Linux】CentOS安装GNOME桌面并实现Windows远程连接

CentOS安装GNOME桌面并实现Windows远程连接

  • 基于 CentOS 搭建 VNC 远程桌面服务
    • 安装、启动 VNC
      • VNC 远程桌面原理
      • 安装 VNC 远程桌面
      • 启动 VNC 远程桌面
    • 连接VNC远程桌面
      • 下载 VNC Viewer
      • 使用 VNC Viewer
  • 安装GNOME桌面并实现VNC远程连接
    • 首先更改图形界面模式
    • 关闭防火墙
    • 安装vnc server
    • 复制配置模板并进行配置
    • 通知systemd重载此配置文件
    • 为用户配置密码
    • 设置开机服务自启
    • 启动服务
    • VNC远程连接
    • 常见问题:
    • Reference

基于 CentOS 搭建 VNC 远程桌面服务

必备知识:本教程假设已学习以下 Linux 基本操作:

  • 连接 SSH
  • 执行命令
  • 编辑文件

安装、启动 VNC

VNC 远程桌面原理

注:以下内容旨在更好地了解 Xorg、X11、VNC 等概念和原理。
名词解释

  • Xorg:在 Linux 用户中非常流行,已经成为图形用户程序的必备条件,所以大部分发行版都提供了它。
  • X11:X Window 系统(X Window System,也常称为 X11 或 X )是一种以位图方式显示的软件窗口系统。
  • VNC:VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面。
  • x11vnc:轻量级 VNC 服务程序。
  • Xvfb:轻量级 Xorg 服务程序。

在 Linux 中显示窗口,首先要创建一个 display 服务。而 Xvfb 就是一个轻量级的,不产生实际屏幕输出的虚拟 display 服务程序。 Xvfb 创建 display 后, x11vnc 连上去并转换成 VNC 协议。
优点是整个系统按需开启,非常轻量,不会影响服务器性能。

安装 VNC 远程桌面

首先,通过以下命令安装比较的系统库

yum install -y xorg-x11-xauth xterm libXi libXp libXtst libXtst-devel libXext libXext-devel

然后,通过以下命令安装 Xvfb

yum install -y Xvfb

最后,通过以下命令安装 x11vnc

yum install -y x11vnc

启动 VNC 远程桌面

启动 VNC 远程桌面命令如下,其中 12345 为端口号(如果已占用需要换另外的端口号,另外需要记得在腾讯云管理页面添加端口放行规则),CrekeNet 为 VNC 远程桌面连接密码:

x11vnc -rfbport 12345 -passwd CrekeNet -create -forever

出现以下输出则启动成功 VNC 远程桌面
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第1张图片

连接VNC远程桌面

下载 VNC Viewer

点击这里 下载 VNC Viewer ,软件支持多平台。
注意选择电脑的操作系统对应链接进行下载,本教程以 Windows 为例

使用 VNC Viewer

下载安装后,首次运行 VNC Viewer ,会出现用户协议确认,如图勾选同意协议
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第2张图片
接着是介绍 VNC Viewer 的新功能,如图点击 “GOT IT” 确认
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第3张图片
选择 “File” —— “New Connection” ,新建 VNC 远程桌面连接
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第4张图片
“VNC Server” 填写腾讯云服务器IP和端口号,格式如 <您的 CVM IP 地址>:12345 ; “Name” 是连接的名字,可随意填,如 Tencent Cloud
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第5张图片
点击 “OK” ,完成连接的新建,这时面板上多了我们刚刚新建的名叫 Tencent Cloud 的连接
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第6张图片
右击这个连接,选择 “Connect”
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第7张图片
开始连接 VNC 远程桌面,此时会出现安全提示,点击 “Continue” 即可继续
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第8张图片
出现密码输入框,如果您是按照前文的默认密码启动 x11vnc ,则填入 CrekeNet 即可;如果您用了自己的密码,则需要输入您设置的正确密码
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第9张图片
成功连接后,出现 Linux 远程桌面
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第10张图片

安装GNOME桌面并实现VNC远程连接

首先更改图形界面模式

[root@localhost ~]# systemctl get-default

如果返回值为:multi-user.target 命令行输入下面指令切入到图形界面:

systemctl set-default graphical.target

如果需要改回命令行模式,输入如下指令

systemctl set-default multi-user.target

关闭防火墙

[root@localhost ~]# systemctl stop firewalld

安装vnc server

yum install tigervnc-server -y

复制配置模板并进行配置

[root@VM_54_14_centos ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
[root@VM_54_14_centos ~]# vim /etc/systemd/system/vncserver@\:1.service

将配置文件中的改成对应的用户,我这里用root

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

将修改为root
对于其他普通用户,操作步骤类似,即首先复制模板,然后修改用户。

通知systemd重载此配置文件

[root@VM_54_14_centos ~]# systemctl daemon-reload

为用户配置密码

vnc的密码跟系统的用户密码不一样,是使用vnc viewer登陆时需要使用的密码。

[root@VM_54_14_centos ~]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

设置开机服务自启

[root@VM_54_14_centos ~]# systemctl enable vncserver@:1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:1.service to /etc/systemd/system/vncserver@:1.service.

启动服务

[root@VM_54_14_centos ~]# vncserver :1
New 'VM_54_14_centos:1 (root)' desktop is VM_54_14_centos:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/VM_54_14_centos:1.log

VNC远程连接

查看VNC的端口号:

[root@VM_54_14_centos ~]# netstat -lnpt|grep Xvnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      23968/Xvnc          
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      23968/Xvnc          
tcp6       0      0 :::5901                 :::*                    LISTEN      23968/Xvnc          
tcp6       0      0 :::6001                 :::*                    LISTEN      23968/Xvnc

默认情况下使用5901端口.
【Linux】CentOS安装GNOME桌面并实现Windows远程连接_第11张图片

常见问题:

连接不上提示timeout
解决方法:如果Linux开启了防火墙功能,就需要手工开启相应的端口,以开启桌面号为“1”相应的端口为例,命令如下 :

[root@VM_54_14_centos ~]# systemctl stop firewalld
[root@VM_54_14_centos ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT    #

** 端口冲突**

[root@VM_54_14_centos ~]# 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: failed (Result: resources) since Thu 2020-01-02 22:56:30 CST; 45s ago
  Process: 22381 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Process: 22379 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
  Jan 02 22:56:26 VM_54_14_centos systemd[1]: Starting Remote desktop service (VNC)...
Jan 02 22:56:30 VM_54_14_centos systemd[1]: Can't open PID file /home/root/.vnc/VM_54_14_centos:1.pid (yet?) after start: No such file or directory
Jan 02 22:56:30 VM_54_14_centos systemd[1]: Failed to start Remote desktop service (VNC).
Jan 02 22:56:30 VM_54_14_centos systemd[1]: Unit vncserver@:1.service entered failed state.
Jan 02 22:56:30 VM_54_14_centos systemd[1]: vncserver@:1.service failed.

解决办法:关闭vncserver进程,重新启动,命令如下:

[root@VM_54_14_centos ~]# vncserver -kill :1
Killing Xvnc process ID 22403
[root@VM_54_14_centos ~]# vncserver :1

Reference

你可能感兴趣的:(Windows&Linux)