不做过多介绍了,下面直接记录下centos7系统下安装配置vncserver的操作记录

0)更改为启动桌面或命令行模式

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

获取当前系统启动模式

[[email protected] ~]# systemctl get-default

multi-user.target

 

查看配置文件

[[email protected] ~]# cat /etc/inittab

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#

# systemd uses \'targets\' instead of runlevels. By default, there are two main targets:

#

# multi-user.target: analogous to runlevel 3          //命令行模式

# graphical.target: analogous to runlevel 5          //图形界面模式

#

# To view current default target, run:

# systemctl get-default

#

# To set a default target, run:

# systemctl set-default TARGET.target

#

 

[[email protected] ~]# systemctl set-default graphical.target           //由命令行模式更改为图形界面模式

[[email protected] ~]# systemctl set-default multi-user.target          //由图形界面模式更改为命令行模式

 

[[email protected] ~]# systemctl get-default

graphical.target

1)关闭防火墙
centos的防火墙是firewalld,关闭防火墙的命令
[[email protected] ~]# systemctl stop firewalld.service #停止firewall
[[email protected] ~]# systemctl disable firewalld.service #禁止firewall开机启动

[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
[[email protected] ~]# cat /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted

2)安装软件:
[[email protected] ~]# yum update
[[email protected] ~]# yum groupinstall "GNOME Desktop" "X Window System" "Desktop"
[[email protected] ~]# yum install tigervnc-server tigervnc vnc vnc-server

3)配置vnc连接
[[email protected] ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:1.service
修改/etc/systemd/system/[email protected]:1.service
找到这一行
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid

这里直接用root 用户登录,所以我替换成
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

如果是其他用户的话比如john替换如下
ExecStart=/sbin/runuser -l john -c "/usr/bin/vncserver %i"
PIDFile=/home/john/.vnc/%H%i.pid

由于直接root用户登录,所以配置如下:
[[email protected] ~]# cat /etc/systemd/system/[email protected]:1.service
.........
[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

为VNC设密码(比如密码设置为123456)
[[email protected] ~]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n             #注意表示"是否输入一个只能查看的密码,选择否",否则连接vnc会出现黑屏
A view-only password is not used

[[email protected] ~]# vim /etc/libvirt/qemu.conf
vnc_password = "123456"
vnc_listen = "0.0.0.0"

重加载 systemd
[[email protected] ~]# systemctl daemon-reload

启动vnc
[[email protected] ~]# systemctl enable [email protected]:1.service
[[email protected] ~]# systemctl start [email protected]:1.service

注意,此处关闭了防火墙
如果防火墙开了,需要开通一下规则:
[[email protected] ~]# firewall-cmd --permanent --add-service vnc-server
[[email protected] ~]# systemctl restart firewalld.service
如果是iptable,则需要在/etc/sysconfig/iptables里添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5903 -j ACCEPT

关闭vnc连接
[[email protected] ~]# /usr/bin/vncserver -kill :1

测试vnc连接:
[[email protected] ~]# novnc_server --vnc 192.168.1.8:5901 --listen 6081
Warning: could not find self.pem
Starting webserver and WebSockets proxy on port 6081
WebSocket server settings:
- Listen on :6081
- Flash security policy server
- Web server. Web root: /usr/share/novnc
- No SSL/TLS support (no cert file)
- proxying from :6081 to 192.168.1.8:5901

Navigate to this URL:

http://kvm-server:6081/vnc.html?host=kvm-server&port=6081 #http访问方式

Press Ctrl-C to exit

由于kvm-server的主机名对于ip是112.112.113.56,所以在浏览器里输入:
http://112.112.113.56:6081/vnc.html?host=112.112.113.56&port=6081

1

2

3

4

5

6

7

8

9

10

也可以在本地windows机器上安装vnc viewer,远程访问

在windows下安装vnc客户端,

下载地址:https://pan.baidu.com/s/1hrSIr4K

提取密码:dqdt

    

VNC远程连接信息(下面ip是VNC服务端的地址):

VNC Server: 112.112.113.56:5901

Encrytion:Let VNC Server choose

    

然后输入vncpasswd的密码即可完成VNC远程连接!

                                                                                                                                             

问题:Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable:
Could not connect: Connection refused

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

[[email protected] ~]# cat /root/.vnc/kevin:1.log

...........

...........

(imsettings-check:31898): GLib-GIO-CRITICAL **: 21:56:03.842: g_dbus_proxy_call_sync_internal: assertion \'G_IS_DBUS_PROXY (proxy)\' failed

GLib-GIO-Message: 21:56:03.854: Using the \'memory\' GSettings backend.  Your settings will not be saved or shared with other applications.

 

** (process:31798): WARNING **: 21:56:03.861: Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable:

Could not connect: Connection refused

 

原因:dbus-daemon存在冲突。

因为root系统环境中装有anaconda,它的bin目录中的dbus-daemon会与系统自带的dbus-daemon冲突。

 

[[email protected] ~]# find / -name "dbus-daemon"

/usr/bin/dbus-daemon

/data/anaconda3/bin/dbus-daemon

/data/anaconda3/pkgs/dbus-1.13.6-h746ee38_0/bin/dbus-daemon

 

[[email protected] ~]# which dbus-daemon

/data/anaconda3/bin/dbus-daemon

 

解决办法:使用非root用户启动vncserver

[[email protected] ~]# useradd vncuser

[[email protected] ~]# echo "[email protected]"|passwd --stdin vncuser

[[email protected] ~]# vim /etc/sudoers

vncuser ALL=(ALL)       NOPASSWD: ALL

 

修改vncserver使用vncuser这个非root用户启动

[[email protected] ~]# cat /etc/systemd/system/[email protected]:1.service

..........

..........

ExecStart=/usr/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i"

PIDFile=/root/.vnc/%H%i.pid

 

接着切入到非root用户vncuser下启动vncserver

[[email protected] ~]# su - vncuser

Last login: Tue Jul  2 22:05:38 CST 2019 on pts/2

 

设置vnc登录密码

[[email protected] ~]$ vncpasswd

 

启动vnc

[[email protected] ~]$ vncserver

 

查看vnc日志

[[email protected] ~]$ cd .vnc/

[[email protected] .vnc]$ ll

total 20

-rw-r--r-- 1 vncuser vncuser  332 Jul  2 22:06 config

-rw-rw-r-- 1 vncuser vncuser 1046 Jul  2 22:10 kevin:1.log

-rw-rw-r-- 1 vncuser vncuser    5 Jul  2 22:06 kevin:1.pid

-rw------- 1 vncuser vncuser    8 Jul  2 22:06 passwd

-rwxr-xr-x 1 vncuser vncuser  112 Jul  2 22:06 xstartup

 

[[email protected] .vnc]$ cat kevin\:1.log

 

Xvnc TigerVNC 1.8.0 - built Nov  2 2018 19:05:14

Copyright (C) 1999-2017 TigerVNC Team and many others (see README.txt)

See http://www.tigervnc.org for information on TigerVNC.

Underlying X server release 12001000, The X.Org Foundation

 

 

Tue Jul  2 22:06:26 2019

 vncext:      VNC extension running!

 vncext:      Listening for VNC connections on all interface(s), port 5901

 vncext:      created VNC server for screen 0

touch: cannot touch /home/vncuser/.cache/imsettings/log’: No such file or directory

 

Tue Jul  2 22:06:30 2019

 ComparingUpdateTracker: 0 pixels in / 0 pixels out

 ComparingUpdateTracker: (1:-nan ratio)

 

Tue Jul  2 22:10:22 2019

 Connections: accepted: 192.168.1.200::56162

 

Tue Jul  2 22:10:23 2019

 Connections: closed: 192.168.1.200::56162 (reading version failed: not an RFB

              client?)

 EncodeManager: Framebuffer updates: 0

 EncodeManager:   Total: 0 rects, 0 pixels

 EncodeManager:          0 B (1:-nan ratio)

 ComparingUpdateTracker: 0 pixels in / 0 pixels out

 ComparingUpdateTracker: (1:-nan ratio)

相关文章: