centos 7 完全离线场景下 搭建jumpserver

一.环境描述

操作系统版本:CentOS Linux release 7.2.1511

python版本 :Python 3.6.1

pip版本 :pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

redis和MySQL版本随机,尽量为最新HA版本。

redis版本:3.2.9

MySQL版本: 5.5.44-MariaDB

jumpserver:1.4.0

注:本文并未采用py3的虚拟环境。

二.准备工作

###########官网上写的,我因用的是公司内网机器,firewalld状态 :Active: inactive (dead)

所以并未做以下步骤。是否做,请各位视情况而定。

$ systemctl start firewalld

$ firewall-cmd --zone=public --add-port=80/tcp --permanent # Jumpserver 对外端口

$ firewall-cmd --zone=public --add-port=2222/tcp --permanent # 用户SSH登录端口 coco;

    --permanent 永久生效,没有此参数重启后失效

$ firewall-cmd --reload # 重新载入规则

$ setsebool -P httpd_can_network_connect 1 # 设置 selinux 允许 http 访问

$ chcon -Rt svirt_sandbox_file_t /app/guacamole/key # 设置 selinux 允许容器对目录读写

############ #

修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文。

$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8

$ export LC_ALL=zh_CN.UTF-8 $ echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

三.开始安装

1.将以下安装包解压到/app目录下

$ tar xf Python-3.6.1.tar.xz -C /app

$ tar xf jumpserver.tar.gz -C /app

$ tar xf coco.tar.gz -C /app

$ tar xf luna.tar.gz -C /app

$ tar xf package.tar.gz -C /app

结果如下所示:

[root@host-10-124-164-161 app]# ll /app

drwxr-xr-x 9 root root 4096 9月 5 18:03 coco

drwxr-xr-x 12 root root 4096 9月 5 16:20 jumpserver

drwxr-xr-x 5 root root 4096 8月 7 12:45 luna

drwxr-xr-x 7 root root 4096 9月 5 16:12 package

drwxr-xr-x 2 root root 4096 9月 5 14:44 package_jumpserver ##此目录存储.gz 文件等

drwxrwxr-x 6 root root 4096 9月 5 16:21 redis-3.2.9

2.升级python

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel  zlib zlib-devel

mv /app/Python-3.6.1 /usr/local/python3.6

cd /usr/local/python3.6/ ##进入python目录

./configure ##配置

make && make install ##编译安装

ll /usr/bin | grep python ##删除旧版本的依赖,此时查看该软连接指向哪一个文件!!!一定记下来,配置yum的时候要用到

rm -rf /usr/bin/python ln -s /usr/local/bin/python3.6 /usr/bin/python python -V

安装完成后如果yum不能使用了:

vim /usr/bin/yum

将第一行改为:

#!/usr/bin/python-2.6 ##这个路径就是刚刚记下来的那个文件的路径。

3.安装依赖包

yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel git

yum -y install python-pip automake autoconf python-devel vim sshpass lrzsz readline-devel

4.安装redis(这里采用安装包安装的方式)

目的:安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke

1.编译安装启动

  tar xf redis-3.2.9.tar.gz /app

  cd /app/redis-3.2.9

  vim redis.conf

          bind 127.0.0.1 ##因是测试,暂时修改了以下四项

          port 6379

          protected-mode no

          daemonize yes

  ./src/redis-server ./redis.conf ##启动redis

  ps -elf |grep redis ##查看是否已经启动

5.安装MySQL

如果不使用 Mysql 可以跳过相关 Mysql 安装和配置,支持sqlite3, mysql, postgres等

$ yum -y install mariadb mariadb-devel mariadb-server ## centos7下叫mariadb,用法与mysql一致

$ systemctl enable mariadb $ systemctl start mariadb # 创建数据库 Jumpserver 并授权

shell>mysql -uroot

     > create database jumpserver default charset 'utf8'; > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'weakPassword';

      > flush privileges;

6.安装NGINX(两种方法)

yum安装

yum install -y nginx

$ systemctl enable nginx

下载rpm包安装

yum install -y nginx-1.10.3-1.el7.ngx.x86_64.rpm

ll /etc/nginx/

7.安装jumpserver rpm包和库依赖

先更新pip版本

cd /app/package

ll pip-18.0-py2.py3-none-any.whl

pip3.6  install --no-index --find-links="/app/package/" --upgrade pip

安装jumpserver rpm包和库依赖

$ yum -y install $(cat /app/jumpserver/requirements/rpm_requirements.txt)

  注意:没有的从网上下载安装。

安装 jumpserver 库依赖:

$ pip install -r /app/jumpserver/requirements/requirements.txt --no-index --find-links="/app/package/jumpserver/"

  问题1:

      如果出现pyasn1版本问题的错误,那么请将python-gssapi==0.6.4所对应的包拷出来解压,python setup.py install。

       然后重新执行。

8.修改jumpserver的配置文件

监听端口为8080,启动前要检查一下8080端口是否被占用

vim /app/jumpserver/config.py

9.生成数据库表结构和初始化数据

$ cd /app/jumpserver/utils

$ bash make_migrations.sh

进入DB,查看一下jumpserver库下是否有数据。

$ mysql -uroot

10.运行 Jumpserver

cd /app/jumpserver

./jms start all -d # 后台运行使用 -d 参数

# 新版本更新了运行脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数

出现以下表示启动成功:

gunicorn is running: 8413

celery is running: 8417

beat is running: 8419

11.开通NGINX服务

默认监听80端口,启动前检查一下80端口是否被占用

编辑vim /etc/nginx/conf.d/jumpserver.conf

CentOS 6 需要修改文件 /etc/nginx/cond.f/default.conf

测试服务:/usr/sbin/nginx -t -c /etc/nginx/nginx.conf

启动服务:/usr/sbin/nginx -c /etc/nginx/nginx.conf

可以看到下图 listen 的是90端口,那是因为我的80端口被占用了。

此时可以登录jumpserver:

http://IP

如果nginx listen 端口换了90,那么需要访问.否则访问 80端口。

http://IP:90

初始登陆的用户名和密码都为:admin

四.安装 SSH Server 和 WebSocket Server: Coco and Web Terminal 前端: Luna

1.安装coco rpm包和依赖

$ yum install -y $(cat /app/coco/requirements/rpm_requirements.txt)

$ pip install -r /app/coco/requirements/requirements.txt --no-index --find-links="/app/package/coco/"

可能会报pytest_runner的错(和 setuptools_scm),下载编译一下即可。

2.修改coco配置文件

修改配置文件并运行,本章采用了最简的配置文件配置方式.

cd /app/coco cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py vi conf.py

./cocod start -d # 后台运行使用 -d 参数./cocod start -d

#启动之前,需要配置NGINX配置文件,重启NGINX服务

# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数

启动成功后去Jumpserver 会话管理-终端管理(http://IP:8080)接受coco的注册

3.解压Luna包,不需要编译

chown -R root:root /app/luna

五.安装windows支持组件Guacamole(如果不需要管理 windows 资产,可以直接跳过)

因为手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole

安装docker

https://download.csdn.net/download/wangxin3618/10643220

下载docker rpm包安装,此链接中有readme文件,根据文件列出的步骤即可安装。

此rpm包不仅可以在centos6上安装也可以在centos7上安装。

启动 Guacamole

$ yum install -y yum-utils device-mapper-persistent-data lvm2

$ docker load </app/guacamole.tar

$ docker run --name jms_guacamole -d -p 8081:8080 -v /app/guacamole/key:/config/guacamole/key -e JUMPSERVER_KEY_DIR=/config/guacamole/key -e JUMPSERVER_SERVER=http://10.*.*.*:8080 jumpserver/guacamole:latest

注意:这里需要修改下 http://<填写jumpserver的url地址> 例: http://10.124.164.161。不能使用127.0.0.1。这个url一定要是登陆jumpserver页面的URL。

六.整合nginx组件

编辑NGINX配置文件后重启NGINX服务

增加下图所示内容,文件中其他内容保持不变

$ cd /app/jumpserver

$ ./jms status # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver

$ cd /app/coco $ ./coco status # 确定jumpserver已经运行,如果没有运行请重新启动coco

# 如果安装了 Guacamole

$ docker ps # 检查容器是否已经正常运行,如果没有运行请重新启动Guacamole

七.测试连接

如果登录客户端是 macOS 或 Linux ,登录语法如下

$ ssh -p2222 admin@10.124.164.161

$ sftp -P2222 admin@10.124.164.161

密码: admin

如果登录客户端是 Windows ,Xshell Terminal 登录语法如下

$ ssh admin@192.168.244.144 2222

$ sftp admin@192.168.244.144 2222

密码: admin

如果能登陆则代表部署成功 !

# sftp默认上传的位置在资产的 /tmp 目录下

# windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下

 

注:如何使用sftp呢?

# 连接成功后,可以看到当前拥有权限的资产,打开资产,然后选择系统用户,即可到资产的 /tmp 目录

$ ls 列出资产目录

$ cd 你的资产

$ ls 列出你的系统用户

$ cd 你的系统用户 # 此处即是当前资产的 /tmp 目录

 

####在Windows上使用 sftp 工具传输文件到 Linux 系统,默认的上传目录在 /tmp ,其他目录没有权限:

 

 

注:

    上述所需压缩包:

          链接: https://pan.baidu.com/s/1nZy9pahnjIVITY-g5Ne6sQ

          提取码: pjnq

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值