一、VNC是什么? ( Virtual Network Computing)VNC允许Linux系统可以类似实现像Windows中的远程桌面访问那样访问Linux桌面。 二、检测服务器是否已经安装装了VNC # rpm -q tigervnc tigervnc-server 如果没有安装,则会直接出现以下信息 package tigervnc is not installed package tigervnc-server is not installed 如果没有安装X-Windows 桌面的话要先安装Xwindows # yum check-update # yum groupinstall "X Window System" # yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts # unlink /etc/systemd/system/default.target # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target # reboot 第一步,安装VNC packages: # yum install tigervnc-server -y 第二步,修改配置信息,在/etc/systemd/system/下建立文件夹vncserver@:1.service 把example config 文件从/lib/systemd/system/vncserver@.service复制到里面 # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service 然后打开这个配置文件/etc/systemd/system/vncserver@:1.service替换掉默认用户名 找到这一行 ExecStart=/sbin/runuser -l PIDFile=/home/ 这里我直接用root 用户登录,所以我替换成 ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i" PIDFile=/root/.vnc/%H%i.pid 如果是其他用户的话比如linoxide替换如下 ExecStart=/sbin/runuser -l linoxide -c "/usr/bin/vncserver %i" PIDFile=/home/linoxide/.vnc/%H%i.pid 第三步,重加载 systemd # systemctl daemon-reload 第四步,为VNC设密码 # vncpasswd 第五步,如果Centos 7 是用iptable防火墙的要输入以下指令: vim /etc/sysconfig/iptables 在合适位置加上 -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5903 -j ACCEPT 重启iptable service iptables restart 如果是用Centos 7 默认防火墙的要输入以下指令: # firewall-cmd --permanent --add-service vnc-server # systemctl restart firewalld.service 如果还是有问题可以试试关闭防火墙 1. 停止并禁用防火墙; 2. systemctl stop firewalld.service 3. systemctl disable firewalld.service 第六步,设默认启动并开启VNC # systemctl enable vncserver@:1.service # systemctl start vncserver@:1.service 这样基本上Centos 端就设好了,Windows 端要去下一个VNC Viewer 的软件,连接上去了。 三、如果出现VNC连接上去黑屏或无法连接,则手工kill掉VNC进程的进行故障处理 1.模拟Kill掉已经启动的VNC服务 1)启动桌面1的服务 [root@testdb ~]# vncserver :1 New 'testdb:1 (root)' desktop is testdb:1 Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/testdb:1.log 2)手工杀掉已经启动的VNC服务进程 [root@testdb ~]# ps -ef | grep -i vnc | grep -v grep root 1178 1 0 11:07 pts/2 00:00:00 Xvnc :1 -desktop testdb:1 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -pn root 1182 1 0 11:07 pts/2 00:00:00 vncconfig -iconic [root@testdb ~]# kill -9 1178 3)确认进程已经杀掉 [root@testdb ~]# ps -ef | grep -i vnc | grep -v grep 4)再次启动桌面1的VNC服务,这里可以看到报错 [root@testdb ~]# vncserver :1 Warning: testdb:1 is taken because of /tmp/.X1-lock Remove this file if there is no X server testdb:1 A VNC server is already running as :1 2.处理过程 很简单,按照错误提示的内容,需要删除/tmp/.X1-lock文件 [root@testdb ~]# rm -f /tmp/.X1-lock 启动尝试,仍然报错 [root@testdb ~]# vncserver :1 Warning: testdb:1 is taken because of /tmp/.X11-unix/X1 Remove this file if there is no X server testdb:1 A VNC server is already running as :1 同样,按照提示的错误,进一步删除/tmp/.X11-unix/X1文件 [root@testdb ~]# rm -f /tmp/.X11-unix/X1 再次启动尝试,OK,启动成功! [root@testdb ~]# vncserver :1 New 'testdb:1 (root)' desktop is testdb:1 Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/testdb:1.log |