2019年阿里云服务器CentOS 7.3 64位 搭建VNC远程桌面服务步骤与方法

看到这篇博客首先恭喜你找到了正确的解决办法,我也是走了很多弯路总结出来的,如果对你有帮助我希望得到你的一个赞?,谢谢!
对于新系统,安装额外yum源:yum install epel-release
升级: yum -y update
清除缓存:yum clean all
以上我感觉这样做比较好,你们不做也没事。

一、图形界面安装(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、配置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

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

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确认

Ubuntu18.04连接成功参考的博客

http://www.eait.co/?p=118

如有写错的请大家在下方评论留言,感谢大家不吝赐教。

你可能感兴趣的:(开发环境问题)