centos 7.4 tigervnc 的配置及使用
yum search tigervnc #搜索 vnc 软件
yum -y install tigervnc-server #安装 vnc server
yum remove tigervnc #卸载 vnc
rpm -qa |grep tigervnc #查看是否安装成功
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
##设置 root 用户的vnc 文件,PIDFile 设置成 root 的根目录
#root 用户,PIDFile 设置成 root 的根目录
sudo sed -i "s#ExecStart=/usr/sbin/runuser -l <USER>#ExecStart=/usr/sbin/runuser -l root#g" /etc/systemd/system/vncserver@:1.service
sudo sed -i "s#PIDFile=/home/<USER>#PIDFile=/root#g" /etc/systemd/system/vncserver@:1.service
或者将 /etc/systemd/system/vncserver@\:1.service 文件中的 <USER> 更换成指定的用户(如下更换成 root):
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
更换成:
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
#配置密码(此密码和系统密码可以不一样)
vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n #提示是否设置一个只读账号,选择 n
systemctl daemon-reload #加载进程(很重要,必须要做)
systemctl restart vncserver@:1.service #启动 vncserver@:1.service
systemctl enable vncserver@:1.service #开机启动
cat /root/.vnc/*.log #可以查看当前用户对应的端口
firewall-cmd --permanent --add-service=vnc-server 添加防火墙
firewall-cmd --reload
#vncserver@:1.service 默认从 5901 开始
#连接 vnc server 的方式需要加端口号 10.0.13.200::5901
Ctrl + Alt + Shift + F #退出全屏
vncserver -list #查看现在vnc session 的连接情况
:1 8243 #:1 对应着 vncserver@:1.service 中的用户
vncserver -kill :1 #kill 掉进程 :1
#其他用户 PIDFile 设置在 /home 目录中
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@\:2.service
sudo sed -i "s#ExecStart=/usr/sbin/runuser -l <USER>#ExecStart=/usr/sbin/runuser -l merit#g" /etc/systemd/system/vncserver@:2.service
sudo sed -i "s#PIDFile=/home/<USER>#PIDFile=/home/merit#g" /etc/systemd/system/vncserver@:2.service
vncpasswd #注意切换到 merit 用户,设置 vnc 密码,不然查看系统日志报如下错误:tail -f /var/log/messages
Jan 8 16:32:12 ftp systemd: vncserver@:2.service: control process exited, code=exited status=1
Jan 8 16:32:12 ftp runuser: Password:
systemctl daemon-reload
systemctl restart vncserver@:2.service
#其他注意
rm -rf /tmp/.X11-unix/* #删除 vnc 连接的缓存文件
vncserver -geometry 800x600 #设置分辨率
New 'erp-ora:2 (root)' desktop is erp-ora:2
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/erp-ora:2.log
tail -f /var/log/message #系统启动后的信息和错误日志
启动服务报错的处理办法:
systemctl restart vncserver@:1.service
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:
rm -rf /tmp/.X11-unix/*
普通用户的ExecStart不同于root,加/sbin/runuser则会在启动服务时报以下错误
Job for vncserver@:2.service failed because the control process exited with error code. See "systemctl status vncserver@:2.service" and "journalctl -xe" for details.
1. 设置的密码会被加密保存在用户主目录下的.vnc子目录(/root/.vnc/passwd)目录中;同时在用户主目录下的.vnc子目录中为用户自动建立xstartup配置文件
(/root/.vnc/xstartup),在每次启动VND服务时,都会读取该文件中的配置信息。
/root/.vnc/目录下还有一个“testdb:1.pid”文件,这个文件记录着启动VNC后对应后天操作系统的进程号,用于停止VNC服务时准确定位进程号。
以上是常规的配置,我有次装完后在上面目录找不到,实际上xstartup在/etc/vnc目录。可以通过locate搜索命名查找指定文件。
2. 若VNC非正常关闭,会导致当前非正常关闭的端口一直被占用(上面提到的.pid文件)。必须手动清楚相关文件,文件一般在/tmp 和 /tmp/.X11-unix/ 目录中。
例如:/tmp/.X1-lock 和 /tmp/.X11-unix/X1
如果记不住,我们可以通过启动命令:vncserver :1 ,指定启动端口。报错信息中会指明加锁文件所在位置。