简介

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

vnc多个独立的workspaces vnc多用户远程桌面_desktop

需求

一般来说我自己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

遇到下面界面

vnc多个独立的workspaces vnc多用户远程桌面_vnc远程桌面_02


按顺序执行下列操作

1->2->q->yes

第二步:安装vnc
yum -y install vnc
第三步:创建要使用vnc的用户
useradd test1 
useradd test2

然后切换到test1和test2用户下执行设置密码

vncpasswd

vnc多个独立的workspaces vnc多用户远程桌面_vnc多个独立的workspaces_03

第四步:创建对应的配置文件

在 @后面的数字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

vnc多个独立的workspaces vnc多用户远程桌面_centos_04

第六步:连接

vnc多个独立的workspaces vnc多用户远程桌面_centos_05

vnc多个独立的workspaces vnc多用户远程桌面_desktop_06

vnc多个独立的workspaces vnc多用户远程桌面_desktop_07

vnc多个独立的workspaces vnc多用户远程桌面_vnc远程桌面_08

这里的密码不是用户的密码 是vncpasswd设置的密码

vnc多个独立的workspaces vnc多用户远程桌面_vnc多个独立的workspaces_09


可以看到这test1和test2用户用了不同的端口登陆 而且做到了互不干扰。