阿里云CentOS 7搭建VNC远程桌面服务步骤方法

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

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

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

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


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

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

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

(以下 X Window System安装非必要)
1
2
#安装好 MATE Desktop 后,再安装 X Window System。
yum groups install "X Window System"

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

安装完成

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


1
systemctl set -default graphical.target

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

二、安装vncserver

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


1
yum -y install tigervnc-server tigervnc

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

代码如下:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
[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


1
systemctl daemon-reload

5、设置为自动启动


1
systemctl enable vncserver@:1.service

6、启动vnc服务


1
systemctl start vncserver@:1.service

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

vim ~/.vnc/xstartup


1
2
3
4
5
6
7
8
9
10
#!/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服务,输入如下两个命令:


1
2
vncserver -kill :1
vncserver

完成所有配置

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

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

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

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

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

systemctl start firewalld.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 --dport 5901 -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


你可能感兴趣的:(linux)