看到这篇博客首先恭喜你找到了正确的解决办法,我也是走了很多弯路总结出来的,如果对你有帮助我希望得到你的一个赞?,谢谢! |
对于新系统,安装额外yum源:yum install epel-release |
升级: yum -y update |
清除缓存:yum clean all |
以上我感觉这样做比较好,你们不做也没事。 |
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 服务器控制台重启服务器,重启后系统将自动进入图形界面.
1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc
yum -y install tigervnc-server tigervnc
2、配置vnc-server
首先,进入目录cd /lib/systemd/system
查看该service,命令为 cat [email protected]
可以看到被注释掉的提示信息(这个提示可能就是CentOS7与6的差别所在了):
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/[email protected]
# 2. Replace with the actual user name and edit vncserver
# parameters appropriately
# (ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"
# PIDFile=/home//.vnc/%H%i.pid)
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:.service`
这里我们将[email protected]文件复制到 /etc/systemd/system/
中并重命名为vncserver@:1.service
命令如下:
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
然后修改 /etc/systemd/system/
下的vncserver@:1.service
vi /etc/systemd/system/vncserver@:1.service
将
修改为当前的用户名、并除去PIDFile=/home/root/.vnc/%H%i.pid
中home修改完毕如下:
[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 %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
更新systemctl
systemctl daemon-reload
设置为自动启动
systemctl enable vncserver@:1.service
启动vnc服务
systemctl start vncserver@:1.service
启动服务报错如下(原因据我实际操作分析报错是由修改vncserver@:1.service时没有除去PIDFile=/home/root/.vnc/%H%i.pid
中home导致的)
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.
解决报错如下(这两个解决方法可以不去操作、防火墙的都要去操作的)
1、处理方法(最好cd进入路径下删除):
rm -rf /tmp/.X11-unix/*
2、设置系统语言为简体中文
查看当前语言 echo $LANG
如果不是中文则手动设置为中文
临时设置:
LANG=zh_CN.UTF-8
永久设置:
vi /etc/locale.conf
LANG=zh_CN.UTF-8
a.登录 ECS管理控制台 --> 网络和安全 --> 安全组 --> 配置规则,在实例所在安全组中 添加安全组规则,入方向、TCP 放行5901端口和6001端口,授权对象0.0.0.0/0代表允许或拒绝所有IP访问。
b.注意:如果您的实例上开启了防火墙,需要设置防火墙允许VNC访问,如果没有开启防火墙,一定要开启,否则本地远程连接不上,哥在这个问题上被坑了很多遍,终于总结出这个原因。
阿里云的Linux系统防火墙默认是关闭的,请先打开。
查看防火墙状态:firewall-cmd --state
开机禁用:systemctl disable firewalld
开启防火墙 systemctl start firewalld.service
如果执行 systemctl start firewalld
命令后出现Failed to start firewalld.service: Unit is masked
执行以下命令:
systemctl unmask firewalld
即可实现取消服务的锁定
设置开启自启动防火墙,重启centos时不用再手动开启防火墙
开机启用:systemctl enable firewalld
以firewalld为例,您需要做如下设置:
firewall-cmd --permanent --add-service vnc-server #允许VNC访问,设置成功提示success
systemctl restart firewalld.service # 重启firewalld
然后还需要设置防火墙规则允许VNC访问。
举例:以iptables为例,您需要做如下设置:
iptables.service
文件,使用yum安装一下 yum install iptables-services
直接修改文件/etc/sysconfig/iptables
文件,添加一行:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT
重启iptables服务 service iptables restart
查看是否启动成功
systemctl status vncserver@:1.service
如何显示active即开启成功,但这个时候一般都是fail
正确的代码显示:
vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2019-05-12 21:16:26 CST; 10s ago
Process: 26322 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
Process: 26320 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 26342 (Xvnc)
CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
‣ 26342 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ssshop:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 102...
5月 12 21:16:23 ssshop systemd[1]: Starting Remote desktop service (VNC)...
5月 12 21:16:26 ssshop systemd[1]: Started Remote desktop service (VNC).
编辑此文件 vi /root/.vnc/xstartup
查看此文件 cat /root/.vnc/xstartup
#!/bin/sh
#unset SESSION_MANAGER
#unset DBUS_SESSION_BUS_ADDRESS
#/etc/X11/xinit/xinitrc
#vncserver -kill $DISPLAY
#exec /etc/X11/xinit/xinitrc
#exec /usr/bin/mate-session &
#exec /usr/bin/gnome-termina
#上面的连接上没有桌面文件显示
[ -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
vncserver -kill :1
vncserver
1、执行vncserver ,第一次执行会要求设置用于客户端通过vnc连接该用户的密码,以后想更改可以通过vncpasswd更改该连接密码。
2、注意最后问是否设置一个只读密码要选否,否则客户端登陆只会看到一个黑屏:
[user01@ana53 ~]$ vncserver
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/user01/.Xauthority does not exist
New 'ana53:3 (user01)' desktop is ana53:3
Creating default startup script /home/user01/.vnc/xstartup
Creating default config /home/user01/.vnc/config
Starting applications specified in /home/user01/.vnc/xstartup
Log file is /home/user01/.vnc/ana53:3.log
通过这个网址下载vncviewer 客户端工具:
https://www.techspot.com/downloads/5760-vnc-viewer.html
输入公网IP:1 ,输入自己设置的vnc密码,连接成功。但出现花屏,原因是分辨率设得太低,于是vnc连接成功后:
鼠标放到顶部(齿轮状的图标),点击"Properties"图标–Options–General–Picture quality:设置为High,点击右下方ok确认
http://www.eait.co/?p=118
如有写错的请大家在下方评论留言,感谢大家不吝赐教。 |