centos 7 完全离线场景下 搭建jumpserver
一.环境描述操作系统版本:CentOS Linux release 7.2.1511python版本 :Python 3.6.1pip版本 :pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)redis和MySQL版本随机,尽量为最新HA版本。redis版本:3.2.9MySQL版本:...
一.环境描述
操作系统版本: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
更多推荐
所有评论(0)