因为需要在centos7配置远程桌面,所以找了很多教程方法,结果都没有远程连接成功,以下是总结了很多教程后整理出的方法,在centos7下比较适用,其他的版本貌似有很大区别,这里不做研究。
一、图形界面安装(MATE DESKTOP)
CentOS 7 系统下,本文以 MATE 桌面环境安装进行安装配置说明:
登录服务器,执行如下指令安装桌面环境:
1
2
|
# 先安装 MATE Desktop
yum
groups
install
"MATE Desktop"
|
命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;
安装完成,显示下面图片complete
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/vncserver@.service,复制一份文件,并改名为vncserver@:1.service
[root@localhost ~]# cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
3、将文件中的<User>用你当前的用户替换,将%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为例,您需要做如下设置:
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访问。
这样本地使用VNCViewer客户端可以使用IP:1进行远程桌面连接了。举例:以iptables为例,您需要做如下设置:
iptables -A INPUT -p tcp --dport 5901 -j ACCEPT #放行TCP 5901端口
service iptables save
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