【V3】JumpServer 如何通过 VNC 协议纳管 Linux(CentOS)资产?


飞致云 发布于 2023-03-15 / 3920 阅读 / 0 评论 /

一、概述

本文主要描述 JumpServer 如何通过 VNC 协议纳管 Linux 资产。本次示例以 CentOS 7.6 为例。

VNC 协议是一种连接协议,允许用户使用键盘和鼠标与远程服务器的图形桌面环境交互。相对于命令行模式,VNC 协议连接服务器可以使管理远程服务器上的文件、软件等设置变得方便与容易。

二、Linux 侧配置

1、安装桌面环境

VNC 协议连接需要 Linux 系统安装的有桌面环境。如果不安装桌面环境,连接后为空白页面。

此示例中安装 GNOME 桌面,您也可以根据需求安装您需要的桌面环境,例如:KDE、MATE、LXQt、Cinnamon 等。

#列出所有已安装和可安装的软件
yum grouplist
#安装桌面环境
yum groupinstall -y "GNOME Desktop"
#修改 Linux 系统默认启动方式为图形化界面
systemctl set-default graphical.target
#查看 Linux 系统默认启动方式
systemctl get-default
#切换 Linux 系统默认启动方式为命令行
systemctl set-default multi-user.target

2、安装 VNC 服务软件

在 Linux 系统中安装 VNC 服务,并验证是否安装成功。

#安装 VNC 服务
yum install tigervnc-server -y
#验证是否安装成功
rpm -qa | grep tigervnc-server

查看 VNC 安装成功如下图所示:

3、启动第一个 VNC 桌面

创建用户 VNC01 用来连接第一个 VNC 桌面。

#新建 VNC01 用户
adduser VNC01
#设置 VNC01 用户的登录密码
passwd VNC01

复制 VNC 的服务器启动操作脚本 vncserver@.service 并重启命名。如下命令: vncserver@:1.service 其中:“1”表示桌面号,该桌面启动对应的端口号为 5901,即 VNC 默认端口号+桌面号。

#复制 VNC 服务器启动操作脚本
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

编辑复制完成的启动脚本,添加连接用户,如下所示:

#编辑启动脚本
vim /etc/systemd/system/vncserver@\:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
 
[Service]
Type=simple
 
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper VNC01 %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
 
[Install]
WantedBy=multi-user.target

使用需要登录 VNC 的用户登录 Linux 资产,设置 VNC 密码。

#切换为 VNC01 用户
su - VNC01
#设置 VNC01 用户的VNC密码,输入完成密码后会提示是否设置该用户:只允许查看,无控制权限,可根据需求设置。
vncpasswd

切换至 root 用户,并启动 VNC 服务。

#加载新配置
systemctl daemon-reload
#启用 VNC01 用户对应的桌面1服务
systemctl start vncserver@:1.service
#设置 VNC01 用户对应的桌面1服务为开机自启动
systemctl enable vncserver@:1.service

查看端口是否监听,并开放端口。

#查看端口监听情况
[root@VM-24-7-centos ~]# netstat -nltp | grep Xvnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1554/Xvnc          
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1554/Xvnc          
tcp6       0      0 :::5901                 :::*                    LISTEN      1554/Xvnc          
tcp6       0      0 :::6001                 :::*                    LISTEN      1554/Xvnc
#开放防火墙对应端口
  firewall规则:
    firewall-cmd --zone=public --add-port=5901/tcp --permanent  #开放 5901 端口
    firewall-cmd --reload   #更新防火墙规则
  iptables规则:
    iptables -I INPUT -p tcp --dport 5901 -j ACCEPT  #开放 5901 端口
#关闭 SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

测试连接。VNC 客户端通过 "VNC Viewer" 进行连接,下载方式地址:https://www.realvnc.com/en/connect/download/viewer/

4、启动第二个 VNC 界面

创建用户 VNC02 用来连接第二个 VNC 桌面。

#新建 VNC02 用户
adduser VNC02
#设置 VNC02 用户的登录密码
passwd VNC02

复制 VNC 的服务器启动操作脚本 vncserver@.service 并重启命名。具体解释见:启动第一个 VNC 界面。

#复制 VNC 服务器启动操作脚本
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service

编辑复制完成的启动脚本,添加连接用户,如下所示:

#编辑启动脚本
vim /etc/systemd/system/vncserver@\:2.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
 
[Service]
Type=simple
 
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper VNC02 %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
 
[Install]
WantedBy=multi-user.target

使用需要登录 VNC 的用户登录该 Linux 资产,设置 VNC 密码。

#切换为 VNC02 用户
su - VNC02
#设置 VNC02 用户的 VNC 密码,输入完成密码后会提示是否设置该用户:只允许查看,无控制权限,可根据需求设置。
vncpasswd

切换至 root 用户,并启动 VNC 服务。

#加载新配置
systemctl daemon-reload
#启用 VNC02 用户对应的桌面2服务
systemctl start vncserver@:2.service
#设置 VNC02 用户对应的桌面2服务为开机自启动
systemctl enable vncserver@:2.service

查看端口是否监听,并开放端口。

#查看端口监听情况
[root@VM-24-7-centos ~]# netstat -nltp | grep Xvnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1554/Xvnc          
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN      26460/Xvnc         
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1554/Xvnc          
tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN      26460/Xvnc         
tcp6       0      0 :::5901                 :::*                    LISTEN      1554/Xvnc          
tcp6       0      0 :::5902                 :::*                    LISTEN      26460/Xvnc         
tcp6       0      0 :::6001                 :::*                    LISTEN      1554/Xvnc          
tcp6       0      0 :::6002                 :::*                    LISTEN      26460/Xvnc
#开放防火墙对应端口
  firewall规则:
    firewall-cmd --zone=public --add-port=5902/tcp --permanent  #开放5902端口
    firewall-cmd --reload   #更新防火墙规则
  iptables规则:
    iptables -I INPUT -p tcp --dport 5902 -j ACCEPT  #开放5902端口
#关闭SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

测试连接。VNC 客户端通过 "VNC Viewer" 进行连接,下载方式地址:https://www.realvnc.com/en/connect/download/viewer/

三、JumpServer 侧配置

JumpServer 侧一个资产一个协议仅能选择一次,所以两个不同端口的 VNC 桌面需要纳管两次,即创建两个资产,如下所示:

1、纳管第一个 VNC 桌面

创建 Linux 资产一,纳管第一个 VNC 桌面。JumpServer 页面的操作顺序按钮依次为:控制台→资产管理→资产列表→主机→创建。

添加 VNC 登录账号。

授权该资产给用户连接。JumpServer 页面的操作顺序按钮依次为:控制台→权限管理→资产授权→创建。授权账号选择指定账号 VNC01。

连接测试。

2、纳管第二个 VNC 桌面

创建 Linux 资产二,纳管第二个 VNC 桌面。JumpServer 页面的操作顺序按钮依次为:控制台→资产管理→资产列表→主机→创建。

创建完成后,通过 VNC 测试连接。

授权该资产给用户连接。JumpServer 页面的操作顺序按钮依次为:控制台→权限管理→资产授权→创建。授权账号选择指定账号 VNC02。

测试连接。



是否对你有帮助?