在CentOS7上开启VNCServer,与那些踩到的坑

在远程SSH登录的时候,拥有一个图形桌面会使人心情舒畅许多。我们的服务器经常有许多人同时登陆,而TeamViewer不好多开,这时VNC就是一个不错的替代解决方案。


2019/04/23

服务器的CentOS7系统自带TigerVNC。Shell执行

vncserver

即可一键开启VNCServer。其后可以跟参数以设定各种配置,包括用户,端口,分辨率等。例如

vncserver :1 -rfbport 5902

其中 :1 指定开启为系统的1号VNCServer,其端口默认对应系统中5900+1=5901端口。然而 -rfbport 5902 指定了使用5902端口,实际开启时就会使用5902端口而不是5901端口。

首次执行VNCServer时会提示设置密码,并在用户Home目录下生成一些文件。

~/
├ .Xauthority
└ .vnc [Folder]
  ├ config
  ├ passwd
  └ xstartup

其中xstartup文件在VNCServer建立之后被执行,它使用X Window System启动图形桌面。

每次执行VNCServer后,在~/.vnc/目录下会生成log文件,通过浏览log可以把握VNCServer是否运行正常。(这很重要

另外,我们随时可以Shell执行

vncserver -list

来查看属于本用户的正在运行的VNCServer;若要关闭2号进程,可以Shell执行

vncserver -kill :2

另外地,如果出现端口抢占,server失联(PID文件失踪)等情况,可以Shell执行

ps -aux | grep Xvnc

来查看所有用户正在运行的VNCServer进程。

控制端方面,我选择了VNC Viewer来连接。如在被控端开启了1号VNCServer,控制端的连接地址就写为 xxx.xxx.xxx.xxx:1 .


其实之所以写这篇文章,是因为我花了近一天时间踩VNCServer的坑...

  1. 通过观察log,发现VNCServer没有正常启动。

    前文提到,xstartup用于启动图形桌面。若仅仅是图形桌面没有启动,VNC Viewer应当可以正常连接VNCServer,只是会显示黑屏。这里我只踩到了关于xstartup的陷阱。

  • xstartup没有权限

sudo chmod a+x /etc/X11/xinit/xinitrc
  • xstartup有运行,但是报错

     一个原因是Anaconda与运行环境有冲突。检查是否安装了Anaconda,并且环境变量 $PATH 中Anaconda在 /usr/bin 之前。

    若确定是运行环境冲突导致xstartup运行出错,可在 ~/.vnc/xstartup 文件的开始与末尾分别添加

PATH_TEMP="$PATH"
export PATH="/usr/bin:$PATH"
export PATH=PATH_TEMP

    上述方法通过 在xstartup运行时 暂时提升环境变量 $PATH 中 /usr/bin 查找优先级的方式 规避运行环境冲突。我觉得是一种简洁、方便、无公害的做法。

  2. VNCServer正常运行,但控制端无法连接到VNCServer。

    确定VNCServer正常运行后,大概率是VNC端口的连接被阻断了。犯罪嫌疑人一个是服务器Linux系统的防火墙,另一个是服务器管理软件的防火墙,需要在它们中检查VNC指定端口(如5901端口)是否被允许通信。

猜你喜欢

转载自blog.csdn.net/hizcard/article/details/86585217
今日推荐