简介
VNC (Virtual Network Console)是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。
推荐
推荐一款绿色、安全的服务器管理工具
iis7服务器管理工具:一款Windows系统、Linux系统、VPS服务器批量管理工具
当前可批量管理的为:
1、win系列的操作系统(含VPS、VM)
2、linux操作系统:CentOS、Ubuntu、Debian等,支持命令及可视化SFTP管理
3、linux的vnc、win的vnc
4、FTP,webshell
链接地址:http://yczm.iis7.com/?tscc
需求
一般来说我自己CentOS的过程中很少有说一定要用到图形界面的,然后这几天突然有人让我帮忙解决一下这个问题,需求如下:
- 远程桌面,多个用户操作互不干扰
- 多个用户通过多个端口连接
具体实现
第一步:安装桌面环境
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
报错,内容如下
Transaction check error:
file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x86_64 conflicts with file from package grub2-common-1:2.02-0.64.el7.centos.noarch
Error Summary
-------------
解决方法:
yum install grub2-common fwupdate-efi -y
然后再次执行
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
重启
reboot
遇到下面界面
按顺序执行下列操作
1->2->q->yes
第二步:安装vnc
yum -y install vnc
第三步:创建要使用vnc的用户
useradd test1
useradd test2
然后切换到test1和test2用户下执行设置密码
vncpasswd
第四步:创建对应的配置文件
在 @后面的数字1表示的是显示界面的序列号,对应的端口是port 5900+序列号。对于每一个启动的vncserver服务,端口号5900会自增1。
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
模版文件为
[root@localhost ~]# grep -vE "^$|^^#" /lib/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
修改方式将<USER>替换为用户名
例如:test1用户使用5901窗口
[root@localhost ~]# grep -vE "^$|^^#" /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l test1 -c "/usr/bin/vncserver %i"
PIDFile=/home/test1/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
例如:test2用户使用5902窗口
[root@localhost ~]# grep -vE "^$|^^#" /etc/systemd/system/vncserver@:2.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l test2 -c "/usr/bin/vncserver %i"
PIDFile=/home/test2/.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 start vncserver@:1
systemctl start vncserver@:2
查看一下端口启动了没
ss -nlt
第六步:连接
这里的密码不是用户的密码 是vncpasswd设置的密码
可以看到这test1和test2用户用了不同的端口登陆 而且做到了互不干扰。