美文网首页
Jumpserver:1.CentOS下安装

Jumpserver:1.CentOS下安装

作者: 小六的昵称已被使用 | 来源:发表于2019-05-30 16:02 被阅读0次

    总体介绍

    欢迎来到 Jumpserver 文档。

    Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。

    Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。

    Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。

    Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

    改变世界, 从一点点开始。

    组件说明

    Jumpserver 为管理后台, 管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作

    Coco 为 SSH Server 和 Web Terminal Server 。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal 直接访问被授权的资产。不需要知道服务器的账户密码

    Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件

    Guacamole 为 Windows 组件, 用户可以通过 Web Terminal 来连接 Windows 资产 (暂时只能通过 Web Terminal 来访问)

    端口说明

    Protocol    Server name     Port        Config File
    TCP         Jumpserver      8080        jumpserver/config.yml
    TCP         Coco            2222, 5000  coco/config.yml
    TCP         Guacamole       8081
    TCP         Db              3306
    TCP         Redis           6379
    TCP         Nginx           80
    

    环境

    [root@test-node-1 ~]# cat /etc/centos-release
    CentOS Linux release 7.6.1810 (Core)
    

    第一步:准备 Python3 和 Python 虚拟环境

    以后运行 Jumpserver 都要先运行以下 source 命令, 以下所有命令均在该虚拟环境中运行

    ## 安装依赖
    yum -y install wget gcc epel-release git krb5-devel
    
    ## 安装 Python3.6
    yum -y install python36 python36-devel
    
    ## 建立 Python 虚拟环境
    ## 因为 CentOS 7 自带的是 Python2, 而 Yum 等工具依赖原来的 Python2
    ## 为了不扰乱原来的环境我们来使用 Python 虚拟环境
    cd /opt
    python3.6 -m venv py3
    source /opt/py3/bin/activate
    

    第二步:安装 Jumpserver

    1.下载或 Clone 项目

    source /opt/py3/bin/activate
    cd /opt/
    git clone --depth=1 https://github.com/jumpserver/jumpserver.git
    

    2.安装依赖 RPM 包

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

    3.安装 Python 库依赖

    pip install --upgrade pip setuptools
    pip install -r requirements.txt
    
    ## 如果下载速度很慢, 可以换国内源
    pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/
    pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    

    4.安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke

    yum -y install redis
    systemctl enable redis
    systemctl stop redis
    systemctl start redis
    systemctl status redis
    

    5.安装 MySQL

    ## 1.安装MySQL
    cat <<EOF >/etc/yum.repos.d/mysql-community.repo 
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    EOF
    yum install -y mysql-community-server
    
    ## 2.启动和初始化
    systemctl start mysqld
    systemctl status mysqld
    systemctl enable mysqld
    
    grep 'temporary password' /var/log/mysqld.log
    mysql_secure_installation
    

    6.创建数据库 Jumpserver 并授权

    mysql -uroot -pXiaoliu123!
    
    create database jumpserver default charset 'utf8';
    grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'Xiaoliu123!';
    flush privileges;
    select user, host from mysql.user;
    show databases;
    exit
    

    7.修改 Jumpserver 配置文件

    cd /opt/jumpserver
    cp config_example.yml config.yml
    
    SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`  # 生成随机SECRET_KEY
    echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
    BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`  # 生成随机BOOTSTRAP_TOKEN
    echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
    
    sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
    sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
    sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
    sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
    sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
    sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml
    
    echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
    echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"
    
    ## 确认内容有没有错误
    cat config.yml
    

    8.运行 Jumpserver

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

    第三步:安装 SSH Server 和 WebSocket Server: Coco

    1.下载或 Clone 项目

    cd /opt
    source /opt/py3/bin/activate
    git clone --depth=1 https://github.com/jumpserver/coco.git
    

    2.安装依赖

    cd /opt/coco/requirements
    yum -y install $(cat rpm_requirements.txt)
    pip install -r requirements.txt
    
    ## 如果下载速度很慢, 可以换国内源
    pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    

    3.修改配置文件并运行

    cd /opt/coco
    cp config_example.yml config.yml
    
    sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/coco/config.yml
    sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" /opt/coco/config.yml
    
    cat config.yml
    

    4.运行

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

    第四步:安装 Web Terminal 前端: Luna

    Luna 已改为纯前端, 需要 Nginx 来运行访问

    访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包, 直接解压不需要编译

    ## 下载
    cd /opt
    wget https://github.com/jumpserver/luna/releases/download/1.4.10/luna.tar.gz
    
    ## 如果网络有问题导致下载无法完成可以使用下面地址
    wget https://demo.jumpserver.org/download/luna/1.4.10/luna.tar.gz
    
    ## 解压
    tar xf luna.tar.gz
    chown -R root:root luna
    

    第五步:配置 Nginx 整合各组件

    1.安装 Nginx

    ## 安装依赖
    yum install yum-utils
    
    ## 配置 YUM 源
    cat <<\EOF >/etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    EOF
    
    ## 安装 Nginx
    yum makecache fast
    yum install -y nginx
    
    ## 启动 Nginx
    rm -rf /etc/nginx/conf.d/default.conf
    systemctl enable nginx
    systemctl stop nginx
    systemctl start nginx
    systemctl status nginx
    

    2.准备配置文件 修改 /etc/nginx/conf.d/jumpserver.conf

    cat <<\EOF >/etc/nginx/conf.d/jumpserver.conf
    server {
        listen 80;  # 代理端口, 以后将通过此端口进行访问, 不再通过8080端口
        # server_name demo.jumpserver.org;  # 修改成你的域名或者注释掉
    
        client_max_body_size 100m;  # 录像及文件上传大小限制
    
        location /luna/ {
            try_files $uri / /index.html;
            alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改
        }
    
        location /media/ {
            add_header Content-Encoding gzip;
            root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改
        }
    
        location /static/ {
            root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改
        }
    
        location /socket.io/ {
            proxy_pass       http://localhost:5000/socket.io/;  # 如果coco安装在别的服务器, 请填写它的ip
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
        }
    
        location /coco/ {
            proxy_pass       http://localhost:5000/coco/;  # 如果coco安装在别的服务器, 请填写它的ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
        }
    
        location /guacamole/ {
            proxy_pass       http://localhost:8081/;  # 如果guacamole安装在别的服务器, 请填写它的ip
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
        }
    
        location / {
            proxy_pass http://localhost:8080;  # 如果jumpserver安装在别的服务器, 请填写它的ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    EOF
    

    3.运行 Nginx

    nginx -t   # 确保配置没有问题, 有问题请先解决
    
    # CentOS 7
    systemctl stop nginx
    systemctl start nginx
    systemctl status nginx
    systemctl enable nginx
    

    第六步:开始使用 Jumpserver

    检查应用是否已经正常运行

    服务全部启动后, 访问 http://192.168.244.144, 访问nginx代理的端口, 不要再通过8080端口访问

    默认账号: admin 密码: admin

    到Jumpserver 会话管理-终端管理 检查 Coco Guacamole 等应用的注册。

    测试连接

    ## 如果登录客户端是 macOS 或 Linux, 登录语法如下(密码: admin)
    ssh -p2222 admin@192.168.244.144
    sftp -P2222 admin@192.168.244.144
    
    ## 如果登录客户端是 Windows, Xshell Terminal 登录语法如下(密码: admin)
    ssh admin@192.168.244.144 2222
    sftp admin@192.168.244.144 2222
    

    如果能登陆代表部署成功

    sftp默认上传的位置在资产的 /tmp 目录下
    windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下
    

    第七步:Systemd 管理自启

    1.Jumpserver

    cat <<\EOF >/usr/lib/systemd/system/jms.service
    [Unit]
    Description=jms
    After=network.target mariadb.service redis.service
    Wants=mariadb.service redis.service
    
    [Service]
    Type=forking
    Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
    ExecStart=/opt/jumpserver/jms start all -d
    ExecReload=
    ExecStop=/opt/jumpserver/jms stop
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    2.Coco

    cat <<\EOF >/usr/lib/systemd/system/coco.service
    [Unit]
    Description=coco
    After=network.target jms.service
    
    [Service]
    Type=forking
    PIDFile=/opt/coco/coco.pid
    Environment="PATH=/opt/py3/bin"
    ExecStart=/opt/coco/cocod start -d
    ExecReload=
    ExecStop=/opt/coco/cocod stop
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    3.开机自启设置

    ## 开机自动启动
    systemctl enable jms
    systemctl enable coco
    
    ## 启动
    systemctl start jms
    systemctl start coco
    
    ## 状态查看
    systemctl status jms
    systemctl status coco
    
    ## 停止
    systemctl stop jms
    systemctl stop coco
    

    附录:

    https://jumpserver.readthedocs.io/zh/docs/introduce.html

    相关文章

      网友评论

          本文标题:Jumpserver:1.CentOS下安装

          本文链接:https://www.haomeiwen.com/subject/mrxcaqtx.html