十九、安全工具:jumpserver
(一)基本概念
1、web集群架构
下图就是一个web集群架构,就是按功能分门别类的一组组服务器组。
6是负载均衡的服务器组,有nginx 7层负载均衡主备和LVS四层负载均衡主备。
5是web集群应用服务器组,比如tomcat,java,php等。
3是数据库,比如缓存型数据库redius、mysql关系型数据库,以及mfs和rsync这样的共享存储服务器组。
4是ansible和zabbix,是对服务器进行批量化管理和监控的。
2、什么是跳板机
企业上面的这些6534服务器组是不能在公网中暴露的,是要运行在内网环境中的。但是,外部网站用户要享受企业提供的web服务,就要通过互联网+账号密码,能连接上这个集群中的某台服务器,才能被提供服务。那外网用户都能连接上我们的服务器,那我们是不是就要担心我们服务器的安全。如果哪个外网用户是个黑客,我们服务器就有被破坏的风险。那如何保证内部服务器的安全?最基本的做法就是,VPN技术。我们可以通过vpn技术,让来自外网的用户无法直接访问我们的服务器,我们的服务器运行在内网环境中,并且躲在防火墙的后面,这样就尽可能的减少了一些乱七八糟的连接和访问。尽管是企业的员工,他如果在外地出差,不在内网环境中,他要想远程办公,他也得通过vpn技术去连接。当然如果是外网其他用户,那他是没有vpn连接权限的。
外网攻击我们可以用vpn技术,那内网环境中如何保证服务器安全呢?就是企业内部如何保证某个员工不删库,或者开发测试运维等不同员工如何进行限制。最基本的做法就是做一个跳板机,就是上图的2号机器,这个机器就是企业员工的统一入口,就是企业内部人员都要先登录2号机器,才有权利连接其他服务器。跳板机就会记录连接到它上面的所有用户的账号、登录时间、做了什么操作、甚至所有操作的过程都屏幕录制下来等,就相当于监控了。
3、什么堡垒机
堡垒机和跳板机是一个概念,只不过堡垒机比跳板机功能更多。也是通过堡垒机对服务器组进行统一管理和操作的。
小结:跳板机就是一台服务器而已,企业It人员想使用内网的某个设备时,必须先连接上跳板机,然后才能登录到内网中的目标设备上进行操作和维护。就是开发测试运维都必须先登录跳板机,然后从跳板机再登录到对应的服务器。也就是企业的服务器必须通过跳板机才能登录。这样就是实现了登录安全。
但是仅仅登录安全还不行,还要实现对登录用户的行为监控和权限划分等更细颗粒的管理,就得搭建堡垒机服务器。以满足角色管理、角色授权、信息资源访问控制、操作记录和审计、系统变更和维护控制、生成服务器资产统计报表等需求。
(二)JumpServer介绍
1、jumpserver是一款堡垒机产品,我们到其官方站点看一下官方文档的介绍:
2、jumpserver的运行架构:
下图是jumpserver的整个运行架构
从图上看,这个企业部署了一台jumpserver服务器和数据库服务器3,而jumpserver服务器管理着企业的另外3台服务器:veb01服务器、backup备份服务器、DB数据库服务器。
用户要先通过远程的方式连接上jumpserver服务器后,才能连接企业的另外3台服务器。
当用户连上jumpserver服务器后,jumpserver就给这个用户定义了一个模板,这个模板规定这个用户后面可以进行哪些操作,就是定义了用户怎么操作jumpserver后面管理的机器。就是jumpserver给用户设置了账号密码及权限,规定了用户能ssh后面的哪台机器、不能ssh哪台机器、以后连接上后能做哪些操作,比如连上web01后只能敲一些nginx相关的命令,或者连上backup服务器后只能敲和rsync命令,同理,连上数据库服务器就只能做一些数据库操作,其他操作就被禁止。并且用户敲的这些命令全部存储到数据库服务器3里面,而服务器3可以将用户的操作以网页方式展示或者以录屏的方式展示出来。
3、jumpserver的组件介绍
jupmserver采用组件化开发的形式,由5个组件共同完成jumpserver的服务。所以我们要正确运行jumpserver就要有上面的5个组件:
LINA组件用于展示前端页面;
Luna组件是一个web terminal。当我们想远程连接一台服务器时,我们平常的做法是,打开我们本地的命令行终端,比如打开我们本地的xhsell终端,开启一个会话,然后ssh连接上目标服务器,然后再进行各种操作。但现在luna组件给我们提供一个更便捷的新方法,就是提供一个网页终端web terminal,去连接目标服务器。就是通过浏览器连接上一个服务器并进行管理。
CORE组件是后台核心组件,是用django框架开发的。我们只要把组件的代码下载下来并部署好,能用就可以了。
coco组件也是一个后台组件,是支持luna组件提供的web terminal功能的。
guacamole组件是支持插件功能的。
4、jumpserver的核心架构说明
就是介绍用户使用jumpserver的流程:
用户A可以通过网站的形式(B1, web terminal)去访问jumpserver,也可以通过ssh(B2,命令行终端)去访问jumpserver服务器。不管用户是通过http还是ssh访问jumpserver服务器,jumpserver服务器的80端口都运行着nginx,我们就可以使用nginx的反向代理功能,用户的不管是http请求还是ssh请求,就被nginx转发了:
当请求路径是默认啥也没有的时候,就是/ 的时候,nginx就把请求直接转发给jumpserver的后台core了,jumpsever再看请求的内容,它一是可以去读数据库(D1),二是它可以调用ansible的api,进行服务器的批量化操作。
当请求路径带socket字段的时候,nginx就把请求转发给C3组件,C3组件处理完毕请求后将结果发给jumperserver的core组件,core组件再根据请求要么去读数据库要么请求ansible进行批量管理。
当请求路径带/组件的时候,nginx就转发到C4,C4处理完,再转给jumperserver core,再处理。
当请求路径带/luna,nginx就转发到luna组件,由luna组件处理完毕直接返回给用户A。
小结:实质就是nginx做了一个反向代理,代理jumpserver的一些核心组件。所以我们要运行jumpserver就要运行起它的各个组件和数据库。
5、jumpserver运行的基础环境
物理机、虚拟机、云服务器都可以,本次我们用本地虚拟机。硬件配置如下:
(三)安装部署jumpserver
1、虚拟机配置
硬件配置:2个cpu,4G内存,至少50G硬盘,因为屏幕录制功能非常占磁盘空间。
软件环境配置:
要想运行jumpserver,你机器还必须有以下软件:
(1)python=3.6.xx ,因为jumpserver是由python语言写的。旧的版本jumpserver是由python2写的,新版本jumpserver是由python3写的。我们本次演示的是新版本。linux系统内置有python2解释器,但我们还需要至少是3.6以上版本的python。
(2)mysql server 必须大于等于5.6。但是现在mysql收费了,如果你用的是免费的mariadb,那版本也必须大于等于5.6。
(3)redius 数据库。
2、环境初始化
3、配置yum源
这里配置阿里云的yum源以及epel源。这部分内容前面反复讲过好几遍了,这里就省略了。
4、安装系统初始化所需的软件
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel gcc zlib zlib-devel openssl openssl-devel
5、安装jumpserver运行所依赖的环境
yum install -y git python-pip gcc automake autoconf python-devel vim sshpass readline-devel
我们获取的jumpserver代码,是在全球最大的代码托管平台github上下载的,所以我们得安装git工具才能从github上下载。
automake是自动编译
6、修改系统的字符集,改为中文
因为后期jumpserver的配置文件中也有很多中文,而且这个软件是我国公司开发的开源软件,还有很多中文支持,所以我们就用中文。
7、部署数据库mysql5.6.49
jumpserver这个软件要运行,它就得存储数据,那数据就得写到mysql里面,所以我们要安装mysql5.6。
本部分你也可以参照(十二)软件包管理的最后部分的案例,就是下载并安装mysql5.6版本的案例。
当然你也可以参照我这里的步骤,我这里就简单演示了:
至此,mysql数据库部署完毕,下面部署python3.6
8、部署python3.6
jumpserver软件在启动的时候,一定是运行一个后台程序,而这个后台程序是由python开发的。所以我们要先在服务器上部署好python开发环境,才能去运行python代码。
但是我们linux自带的有python解释器,但是是python2的:
由于jumpserver是python3开发的,所以我们现在准备python3的环境:
编译安装的过程中如果出现报错情况,比如出现基础环境缺少哪些依赖包,那编译安装过程就中止了,此时我们除了把依赖包都安装上外,我们还得把编译的文件和python解压缩包都全部删除了,然后重新解压Python-3.6.10.tgz包,生成新的解压缩包,然后再编译安装。
正确编译安装完毕后,看看你的python是否正确:
第五步:配置python3的环境变量,就是可以直接使用python3的命令。
环境变量PATH的作用是:当我们敲ls,cd等命令的时候,系统是默认去PATH变量中,冒号分隔的各个路径下,去寻找是否有ls,cd这个命令,也就是我们which ls出来的结果一样,得到的是ls命令的绝对路径,然后执行ls命令的。而我们的linux系统是内置了python2解释器的,就是path变量中是有python命令的。
此时我又编译安装了python3后,我的系统就有多个python版本。所以此时,我得明确运行jumpserver软件时,我要用哪个解释器运行。但是我的python3是编译安装的,编译安装的路径都是我自己指定的,所以yum、systemctl、PATH等都没有配置我自己编译安装的python3。所以,我的python3编译安装完后,以后要运行jupmserver就要用python3的绝对路径非常麻烦。所以,此时我们要配置python3的环境变量,就是可以直接使用python3的命令。其实,一般编译安装完毕后,下一步都是配置环境变量:
第六步:创建python运行所需的虚拟环境。
为什么要创建虚拟环境?因为python程序(比如这里的Jumpserver程序)能够顺利运行需要安装很多模块。就是实现不同功能的python程序需要调用的不同的模块,所以不同项目的python程序需要的模块不同,我们不可能把所有的python模块都导入。也就是,一台服务器可能要运行多个python程序,每个python程序需要不同的模块,那此时一个解释器就不够用了。此时我们一般的做法是:安装多个版本的python解释器去运行项目。也就是你运行啥python程序,你就创建这个python程序对应的虚拟环境。而创建虚拟环境要用到virtualenv工具。
所以首先我们要先安装virtualenv工具。而按照virtualenv工具,我们得用pip3去安装。pip3也是一个工具,是给python3安装模块的一个工具。或者说:python3是一个解释器,这个解释器自带了一个pip3工具,这个工具是给python3安装模块的。所以我们现在要用pip3给python3安装virtualenv模块:
出现上面的报错就非常麻烦!上面报错的环节是,你安装python模块的时候出现了报错,报错你缺少xxx模块而无法使用。这种情况的解决方式非常麻烦!你要把你上面所有关于python3的步骤全部都撤回。因为我们现在安装的python3软件是我们下载的python3源代码经过gcc编译安装后生成的软件,所以,如果此时我们即使把SSL模块安装上了,python3软件也没有整合这个SSL模块了。所以,要从头再来!一是把环境变量文件改回去;二是删除掉编译安装的python3(这步好做,因为是编译安装的,直接删除文件夹即可);三是安装openssl工具;四是重新编译安装python3才可以。
这里重新再演示一遍:
下面就是再次pip3 install virtualenv,安装virtualenv工具,但是我们先不操作,因为pip3安装的速度非常慢,中间很可能又断开,就又得处理很多东西。pip3就类似linux的yum工具,pip3是python3的管理工具。用pip3下载安装python3的一些包,pip3默认是去python官网的一个软件仓库寻找这些包并安装,所以我们先更新一下pip3的下载源,改成国内的源,速度就快很多。
第七步:使用虚拟环境工具,再创建出一个python3的解释器,用于运行jumpserver软件代码。
这步操作的意思就是:用virtualenv工具创建一个名字叫jumpserver_venv1的虚拟环境。这个虚拟环境用的python解释器是python3。所以此时我basenode上就有2个python3解释器:一个本体的python3解释器,一个虚拟的python3解释器。
第八步:激活虚拟环境
激活虚拟环境和退出虚拟环境的本质,其实就是默认修改了你机器的环境变量。
activate其实是一个脚本文件,我们用source命令去读取一下,也就是执行以下,你机器的环境变量就改变了。这个改变了环境变量的环境就是你创建的虚拟环境。这个虚拟环境就好比你又安装了一个python3解释器,而且你可以在这个环境下安装你程序运行需要的相关模块,然后在这个虚拟环境中运行你的程序。当你不想运行程序了,想退出了,你就deactivate,就把你机器的环境变量文件又改回原来的内容了,这样你就回到原来的环境中了。
所以,创建环境变量的这个virtualenv工具特别好,它可以不搞乱你机器原本的环境变量,在原本的环境中创建一个虚拟环境,然后你随便在虚拟环境中做任何事,当你退出虚拟环境后,机器原来的环境还是好好的。
所以,在实际项目中,我们也是不同的项目创建不同的虚拟环境,也就是一个项目对应一个它自己的虚拟环境。这样项目1的运行就不会干扰项目2的运行,就不会出现当项目1、2同时依赖某个包时,而且依赖的包的版本不同,不能同时安装某个包的两个版本,就会2个项目运行冲突了。每个项目都有自己的虚拟环境就不会产生冲突了。而且机器原本的环境也不会被改乱。这个思路可以类比我windows的电脑里面安装了一个vm虚拟化软件,然后通过vm创建的虚拟机。虚拟机和我win的实体机互不影响,互相不影响对方的环境变量。思想是一样的,只是不同的应用。
至此,python3部署完毕,下面开始部署redis数据库。
9、部署redis数据库
mysql是关系型数据库,磁盘数据库,数据以文件的形式存储在磁盘上,可以持久化保存的。所以读写速度慢。
redis是内存型数据库,缓存型数据库。读写速度快。
所以一个网站的web架构,一些需要频繁读取的数据会放到redis数据库中,这样可以加快用户的读取速度,提升web集群的性能。
部署redis数据库,一是,你可以下载rpm包手动安装,但你要手动解决依赖,所以不推荐。二是,你可以yum自动化安装,可以自动解决依赖,适合软件调试学习使用。三是,你可以源代码编译安装redis。
当你只是在测试服务器上部署、或者仅仅是作为一些依赖而需要安装的软件,我们建议一般使用yum安装。而对于一些企业级的部署,需要一些指定的版本和添加指定的额外功能时,我们就得选择源代码编译安装。所以这里我们选择yum安装即可。
yum安装,你首先要配置好阿里云的epel源。
redis数据库就部署完毕了!
10、部署jumpserver服务
jumpserver这个软件程序是由一系列的组件共同工作,才能够正确运行。
jumpserver服务是一个后台程序。后台程序基本上都是需要依赖于数据库才能运行,后台程序在启动的时候,代码就会去连接数据库,所以我们要保证数据库正确启动且可以正确连接,否则后台程序是起不来的。
(1)获取jumpserver程序的代码
我们去代码托管平台github上,找到jumpserver并且复制下载链接,用wget下载:
wget https://github.com/jumpserver/jumpserver/releases/download/v2.1.0/jumpserver-v2.1.0.tar.gz
下载完毕后,我们就在当前文件夹下面解压缩,生成一个带版本号的解压缩文件夹。
同时,我们再创建一个没有版本号的软链接。
(2)安装运行jumpserver软件必须的依赖组件
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
这里很多工具你机器上有忽略了,也并不是说必须有这些工具,jumpserver才能运行。只是这些是基础的包,都是我安装多次踩过的坑,比如openldap-devel就是jumpserver用户认证的工具,比如你安装好后需要哪些工具去观察你系统的资源,这些基础的依赖最好都提前安装上,后期使用就方便了。
(3)安装运行jumpserver所需要的模块
因为由python开发的程序,必须安装该程序使用的一些模块,才能运行。所以我们现在要安装jumpserver程序中调用到的模块。
但是,安装jumpserver模块必须先激活虚拟环境,然后安装在虚拟环境中。
此时就开始安装python程序和linux系统交互所依赖的一系列模块。
这个安装过程中只要不出现红色的error报错信息,就表示没问题。如果报错,安装进程就自动中断,我们就必须得解决这个报错再重新安装。如果出现warning就关系不大。
(4)修改jumpserver程序运行的配置文件
A:jumpserver的配置文件是config_example.yml,从文件的名字上看,以.yml结尾,这种配置文件和我们之前讲的ansible的剧本脚本是一样的语法,都是yml语法。这种语法就是:关键字+冒号+空格+值 这种形式的语法格式。
jumpserver配置文件默认的配置就是上面的这些,我们要修改的地方是BCD这三个地方,其中BC都是一个密钥,需要我们手动生成的。
if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` ; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
3、4步骤的命令是一个shell语句,先做一个判断,if如果SECTRE_KEY是空的话,就给SECRET_KEY赋值,赋值用反引号引起来,引号里面的值当作secret_key的值。然后再把值追加写入用户环境变量.bashrc文件中,并且在屏幕上打印出这个值,后面我们要把这个2个值填写到上上图中的B、C处的。
至此,jumpserver的配置文件修改完毕!
(5)对python程序进行数据库迁移
jumpserver这个程序是由python的web框架django开发而来的,所以django程序要运行起来,必须得先配置数据库,而我们前面已经配置数据库了,所以这里我们要进行数据库迁移,生成库表的信息,才能运行程序。
至此jumpserver部署完毕。下面是启动jumpserver核心后台:
11、启动jumpserver后台程序
出现上面的信息就表示jumpserver后台程序已经跑起来了,现在用chrom测试访问一下8080端口:
至此,我们的jumpserver后台是正确启动了,也从8080端口验证了它是启动了。
至此,我们部署了最核心的CORE组件。但是要使jumpserver正确工作,还得部署其他的组件。下面我们部署COCO组件。
(四)koko程序部署
CoCo是用python写的一个组件,Koko是最新的版本,但是是用go语言开发的,其性能、效率、系统资源利用率都更高了。
这个组件的功能是:用户不仅可以在本地命令行终端ssh连接一台服务器,然后去敲各种命令,也可以通过网页的形式去连接一台服务器,在线的敲各种命令。就是一个在线的终端。
1、下载koko源代码
这是官方给的一个下载地址:
https://github.com/jumpserver/koko/releases/download/v2.1.0/koko-v2.1.0-linux-amd64.tar.gz
2、解压缩、修改配置文件
3、启动koko程序
2222端口运行的就是koko程序
至此,koko组件部署完毕。
(五)部署Guacamole组件
jumpserver堡垒机的正确运行,是由它的5个组件一起提供的。现在讲guacamole组件:
意思就是,通过guacamole这个组件,我们就可以通过浏览器的形式,远程连接一个服务器,当作我们的远程桌面使用。部署Guacamole组件的流程也是下载、安装、启动,但是中间还是涉及到很多步骤,而且我们没有找到安装包,所以这里就不安装guacamole组件了。而且guacamole组件是一个windows组件,安装后只能通过jumpserver的web客户端来连接windows服务器,不实用,所以我们不安装了。
(六)部署Lina、Luna组件
lina组件是让前端页面更好看的展示。前端是静态文件,前端文件是由nginx来解析的。
luna组件是实现web terminal前端,前端只提供样式,数据从后台core获取。所以luna和core协同工作,实现浏览器形式的命令行终端。
1、获取lina代码。下载地址: wget https://github.com/jumpserver/lina/releases/download/v2.1.0/lina-v2.1.0.tar.gz
2、解压缩lina组件、重命名、修改属主和属组
3、获取luna代码:wget https://github.com/jumpserver/luna/releases/download/v2.1.1/luna-v2.1.1.tar.gz
4、解压缩luna、改名
5、部署nginx
nginx的作用是处理静态文件,以及对于jumpserver后台程序的反向代理作用。
上图画框的内容是要删除的,删除后用下面的内容代替:
37
38 server {
39 listen 80;
40
41 client_max_body_size 100m;
42
43 location /ui/ {
44 try_files $uri / /index.html;
45 alias /opt/jumpserver_xiangguan/lina/;
46 }
47
48 location /luna/ {
49 try_files $uri / /index.html;
50 alias /opt/jumpserver_xiangguan/luna/;
51 }
52
53 location /media/ {
54 add_header Content-Encoding gzip;
55 root /opt/jumpserver_xiangguan/jumpserver/data/;
56 }
57
58 location /static/ {
59 root /opt/jumpserver_xiangguan/jumpserver/data;
60 }
61
62 location /koko/ {
63 proxy_pass http://localhost:5000;
64 proxy_buffering off;
65 proxy_http_version 1.1;
66 proxy_set_header Upgrade $http_upgrade;
67 proxy_set_header Connection "upgrade";
68 proxy_set_header X-Real-IP $remote_addr;
69 proxy_set_header Host $host;
70 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
71 access_log off;
72 }
73
74 location /ws/ {
75 proxy_set_header X-Real-IP $remote_addr;
76 proxy_set_header Host $host;
77 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
78 proxy_pass http://localhost:8070;
79 proxy_http_version 1.1;
80 proxy_buffering off;
81 proxy_set_header Upgrade $http_upgrade;
82 proxy_set_header Connection "upgrade";
83 }
84
85 location /api/ {
86 proxy_pass http://localhost:8080;
87 proxy_set_header X-Real-IP $remote_addr;
88 proxy_set_header Host $host;
89 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
90 }
91
92 location /core/ {
93 proxy_pass http://localhost:8080;
94 proxy_set_header X-Real-IP $remote_addr;
95 proxy_set_header Host $host;
96 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
97 }
98
99 location / {
100 rewrite ^/(.*)$ /ui/$1 last;
101 }
102 }
103
此时登录前端页面就能查看到下面的页面:
也就是当我们访问80端口的时候,nginx就把请求转发给后台的8080端口,就是jumpserver服务了。
账号和密码默认都是admin:
登陆上就看到:
这个页面就是堡垒机的页面了,能正确显示这个页面,也说明我们的jumpserver后台程序正确跑起来了。也就是到此我们的堡垒机部署完毕。至于后面怎么使用这个页面上的各种功能,你可以去看jumpserver的官方文档介绍。
(七)补充:解决koko无法启动问题
新版jumpserver在启动koko组件的时候,经常会出现如下问题:
解决步骤如下:
1、删除koko的data目录下的.access_key文件
2、把前端页面中的‘会话管理’-‘终端管理’中的数据清除掉,点击删除就清除了。
3、重新生成获取SECRET_KEY和BOOTSTRAP_TOKEN这两个重要的密钥,然后修改jumpserver后台所有组件的配置,重启服务。
我们当时生成这2个key的时候,是用的2条shell语句自己生成的密钥:
这2条shell脚本是要先判断这两个key是否为空,为空了才生成新key,所以这里我们先把原来的key删了,再生成新的key。所以我们要先修改环境变量配置文件:vim ~/.bashrc
把.bashrc文件里面最后2行的key值dd删掉,然后保存退出,然后退出会话重新登录,这样系统重新加载用户的环境变量,此时echo $SECTRE_KEY 就返回为空,同理BOOTSTRAP_TOKEN。就是正确删除了旧的密钥。
然后我们再用上图的shell语句重新生成2个新的密钥。同时环境变量配置文件也自动修改了,所以要退出会话重启一下。
然后修改jumperver组件的config.yml文件中那2个key值,并重新启动jumpserver的core核心后台(这里要先/opt/jumpserver_xiangguan/jumpserver/jms stop ,然后再/otp/jumpserver_xiangguan/jumpserver/jms start -d启动)。
然后修改koko的配置文件(/opt/jumpserver_xiangguan/koko/config.yml)并后台重新启动koko(/opt/jumpserver_xiangguan/koko/koko -d)。
如果你还安装了guacamole组件,你也得把这个组件涉及到这2个密钥的文件也改改。
- 小结:jumpserver后台程序的启动流程
(1)启动数据库mysql、redis
systemctl start mysqld
systemctl start redis
(2)激活python的虚拟环境,然后启动jumpserver的核心后台
source /opt/python_xiangguan/jumpserver_venv1/bin/activate /opt/jumpserver_xiangguan/jumpserver/jms start -d
(3)启动koko程序
/opt/jumpserver_xiangguan/koko/koko -d (4)启动nginx,也就是启动web服务器
(5)从前端浏览器查看页面是否正常展示,正常展示就说明后台程序正确运行着。