因为需要在centos7配置远程桌面,所以找了很多教程方法,结果都没有远程连接成功,以下是总结了很多教程后整理出的方法,在centos7下比较适用,其他的版本貌似有很大区别,这里不做研究。

一、图形界面安装(MATE DESKTOP)

CentOS 7 系统下,本文以 MATE 桌面环境安装进行安装配置说明:

登录服务器,执行如下指令安装桌面环境:




# 先安装 MATE Desktop        
         yum          groups         install         "MATE Desktop"


命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;

安装完成,显示下面图片complete


X Window System安装非必要)



#安装好 MATE Desktop 后,再安装 X Window System。        
         yum          groups         install         "X Window System"


命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;

安装完成

设置默认通过桌面环境启动服务器:



systemctl          set         -default graphical.target


安装完成后,通过 reboot 等指令重启服务器,或者在 ECS 服务器控制台重启服务器,重启后系统将自动进入图形界面

二、安装vncserver

1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc



yum -y          install         tigervnc-server tigervnc


2、Centos7需要配置的文件/lib/systemd/system/vncserver@.service,复制一份文件,并改名为vncserver@:1.service


代码如下:


[root@localhost ~]# cp 
 /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service

3、将文件中的<User>用你当前的用户替换,将%i替换为1


[Unit]        
         Description=Remote desktop service (VNC)        
         After=syslog.target network.target        
         [Service]        
         Type=forking        
         # Clean any existing files in /tmp/.X11-unix environment        
         ExecStartPre=         /bin/sh         -c          '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'        
         ExecStart=         /sbin/runuser         -l root -c          "/usr/bin/vncserver :1 -geometry 1280x720 -depth 24"        
         PIDFile=         /root/         .vnc/%H%i.pid        
         ExecStop=         /bin/sh         -c          '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'        
         [Install]        
         WantedBy=multi-user.target


4、更新systemctl


systemctl daemon-reload


5、设置为自动启动




systemctl enable vncserver@:1.service


6、启动vnc服务




systemctl start vncserver@:1.service


7、修改配置文件(解决vncviewer连接时出现蓝屏或灰屏的问题) 

vim ~/.vnc/xstartup




#!/bin/sh                           
         # Uncomment the following two lines for normal desktop:         
         # unset SESSION_MANAGER         
         # exec /etc/X11/xinit/xinitrc         
         [ -x          /etc/vnc/xstartup         ] &&          exec         /etc/vnc/xstartup        
         [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources         
         xsetroot -solid grey         
         vncconfig -iconic &         
         x-terminal-emulator -geometry 80x24+10+10 -         ls         -title          "$VNCDESKTOP Desktop"         &         
         mate-session &


改变xstartup的权限

这个问题是很多人容易忽视的问题,也是造成连接成功后黑屏的原因之一。

在CentOS中,xstartup的文件路径为:/root/.vnc/ (可以通过locate xstartup来查看xstartup的文件路径)

所以需要执行:chmod 777 /root/.vnc/xstartup

8、 重启vnc服务,输入如下两个命令:




vncserver -kill :1         
         vncserver


完成所有配置

a.登录 ECS管理控制台,在实例所在安全组中 添加安全组规则,放行TCP 5901端口。

b.注意:如果您的实例上开启了防火墙,需要设置防火墙允许VNC访问,如果没有开启防火墙,一定要开启,否则本地远程连接不上,哥在这个问题上被坑了很多遍,终于总结出这个原因。

举例:
以firewalld为例,您需要做如下设置:

1. firewall-cmd --permanent --add-service vnc-server #允许VNC访问
2. systemctl.service # 重启firewalld

如果提示防火墙没有运行,请先开启

systemctl.service

如果执行 systemctl start firewalld 命令后出现Failed to start firewalld.service: Unit is masked,执行以下命令:

systemctl unmask firewalld ,即可实现取消服务的锁定

设置开启自启动防火墙,重启centos时不用再手动开启防火墙

systemctl enable firewalld.service

然后还需要设置防火墙规则允许VNC访问。

举例:以iptables为例,您需要做如下设置:


    1. iptables -A INPUT -p tcp --dport5901 -j ACCEPT #放行TCP 5901端口
    2. service iptables save# 保存规则
    3. service iptables restart #重启规则


    这样本地使用VNCViewer客户端可以使用IP:1进行远程桌面连接了。


    ps:下面可能你需要的


    1.报错:Job for vncserver@:1.service failed because the control process exited with error code. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.

    处理方法:

    rm -rf /tmp/.X11-unix/*

    2、设置系统语言为简体中文

    查看当前语言

    echo $LANG

    如果不是中文则手动设置为中文

    临时设置:

    LANG=zh_CN.UTF-8

    永久设置:

    vi /etc/locale.conf

    LANG=zh_CN.UTF-8