一、VNC
客户给你提供了linux系统,这个linux系统呢不是最小化安装的,是桌面版的,可以直接登录访问到linux系统环境的桌面。但是呢,可能客户的linux服务器是放到了机房,机房不会让你进去的,所以你没法去Linux服务器的旁边,操作linux的桌面。那怎么办呢?提供了一种虚拟网络控制台的工具VNC,可以本地windows上远程连接linux平台,看到Linux的桌面!下面我们就来介绍一下该工具的使用方法。
VNC介绍
VNC (Virtual Network Console)是虚拟网络控制台的缩写。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和vncconnect。大多数情况下用户只需要其中的两个命令:vncserver和 vncviewer。
VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。
所以WINDOWS端安装VNCVIEWER,LINUX端安装VNCSERVER!
1. windows端安装vncviewer
2. linux端安装vncserver
2.1 离线安装
解压后安装命令为:
# rpm -ivUh *.rpm --force --nodeps
2.2 在线安装
centos7下一般使用tigervnc。 root下执行命令:
# yum install -y tigervnc-server
2.3 配置vncserver
#cd /lib/systemd/system
#cp vncserver@.service vncserver@:1.service
#vim vncserver@: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=/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
如果是非root用户,例如用户admin,PIDFile处应该是:
ExecStart=/sbin/runuser -l admin -c “/usr/bin/vncserver %i ”
PIDFile=/home/admin/.vnc/%H%i.pid
3. 启动vncserver
# systemctl daemon-reload
# systemctl enable vncserver@:1.service #设置vnc开机启动
# vncpasswd #设置vnc连接密码
# systemctl start vncserver@:1.service
# systemctl status vncserver@:1.service
# systemctl restart vncserver@:1.service
4. vncviewer连接
windows端安装的vncviewer,进入页面在右上角先进性注册。
通过linux的服务器IP加上:1,进行连接桌面,例如:
192.168.208.11:1
二、多个VNCServer
在上面博客中介绍了一台Linux服务器上开启一个VNCServer,然后通过Windows端的VNCviewer去连接该Linux,最后可以在Windiwos系统中,远程看到Linux的系统界面。但是现实情况可能需要不止一个用户桌面环境,比如我们在远程安装oracle时还需要一个oracle用户的桌面环境,而之前只配置了root用户,下面描述配置多用户的VNCserver。原理很类似,只需要配置多个vncserver@:n.service。
操作步骤
1. 复制vncserver@.service
假设我们的用户已经建立好,这里以admin为例。首先以root用户登录,在目录下,和前述一样,拷贝配置文件,不过这里不是:1,而是:2,数字可以自己设置,一般用递增来描述。
#cd /lib/systemd/system
#cp vncserver@.service vncserver@:2.service
#vi vncserver@:2.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=/sbin/runuser -l admin -c "/usr/bin/vncserver %i "
PIDFile=/home/admin/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
保存退出。然后按照配置文件提示,执行
#systemctl daemon-reload
#systemctl enable vncserver@:2.service
2. 修改vnc登录验证密码
执行完毕后,切换到admin账户,执行
$vncserver :2
会要求输入验证密码
You will require a password to access your desktops.
Password:
Verify:
xauth: file /home/admin/.Xauthority does not exist
New ‘localhost.localdomain:2 (admin)’ desktop is localhost.localdomain:2
Creating default startup script /home/admin/.vnc/xstartup
Starting applications specified in /home/admin/.vnc/xstartup
Log file is /home/admin/.vnc/localhost.localdomain:2.log
3. 启动服务
之后切换回root,执行
# systemctl deamon-reload
# systemctl start vncserver@:2.service
这时候提示启动不成功,提示已经有一个vncserver as :2 running了,这时候我们先要杀掉这个进程,执行命令
# ps -ef | grep vnc
查看vncserver :2的进程id,如pid为1311,则执行
# kill -9 1311
# systemctl start vncserver@:2.service
还是报错,查看日志
# journalctl -xn
提示需要删除/tmp/.X2-lock ,执行
# rm /tmp/.X2-lock
# systemctl start vncserver@:2.service
还是报错,查看日志,提示需要删除/tmp/.X11-unix/X2 ,执行
# rm /tmp/.X11-unix/X2
再次启动
# systemctl start vncserver@:2.service
# systemctl status vncserver@:2.service