因为需要在centos7配置远程桌面,所以找了很多教程方法,结果都没有远程连接成功,以下是总结了很多教程后整理出的方法,在centos7下比较适用,其他的版本貌似有很大区别,这里不做研究。
一、图形界面安装(MATE DESKTOP)
CentOS 7 系统下,本文以 MATE 桌面环境安装进行安装配置说明:
登录服务器,执行如下指令安装桌面环境:
1
2# 先安装 MATE Desktop
yumgroups install "MATE Desktop"
命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;
安装完成,显示下面图片complete
(以下X Window System安装非必要)
1
2#安装好 MATE Desktop 后,再安装 X Window System。
yumgroups install "X Window System"
命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;
安装完成
设置默认通过桌面环境启动服务器:
1systemctlset-default graphical.target
安装完成后,通过 reboot 等指令重启服务器,或者在 ECS 服务器控制台重启服务器,重启后系统将自动进入图形界面
二、安装vncserver
1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc
1yum -yinstall tigervnc-server tigervnc
2、Centos7需要配置的文件/lib/systemd/system/vncserver@.service,复制一份文件,并改名为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
1systemctl daemon-reload
5、设置为自动启动
1systemctl enable vncserver@:1.service
6、启动vnc服务
1systemctl 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
2vncserver -kill :1
vncserver
完成所有配置
a.登录ECS管理控制台,在实例所在安全组中添加安全组规则,放行TCP 5901端口。
b.注意:如果您的实例上开启了防火墙,需要设置防火墙允许VNC访问,如果没有开启防火墙,一定要开启,否则本地远程连接不上,哥在这个问题上被坑了很多遍,终于总结出这个原因。举例:
以firewalld为例,您需要做如下设置:firewall-cmd--permanent--add-service vnc-server#允许VNC访问
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为例,您需要做如下设置:iptables-A INPUT-p tcp--dport5901-j ACCEPT#放行TCP 5901端口
service iptables save# 保存规则
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