Jumpserver
     分类:环境搭建     有: 0 条评论

Jumpserver

     分类:环境搭建     有: 0 条评论

虽然官方有安装手册;但还是会遇到很多坑;这里搬运一下官方文档,并加入了一些自己遇到的问题及解决方法。

Centos7

一键脚本

wget https://raw.githubusercontent.com/jumpserver/Dockerfile/mysql/get.sh && sh get.sh
nohup /opt/start_jms.sh &

手动安装(新版)

https://mp.weixin.qq.com/s/Pz3JlJq75oagAghgVxbhMg

手动安装(旧版)

关闭 selinux 和防火墙。

# 安装依赖包
yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

# 编译安装
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xvf Python-3.6.1.tar.xz  && cd Python-3.6.1
./configure && make && make install

# 建立 Python 虚拟环境
因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境所以使用 Python 虚拟环境。
cd /opt
python3 -m venv py3
source /opt/py3/bin/activate
# 看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]


# 下载或 Clone 项目
cd /opt/
git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master

# 安装依赖 RPM 包
cd /opt/jumpserver/requirements
yum -y install $(cat rpm_requirements.txt)   # 如果没有任何报错请继续

# 安装redis
yum -y install redis
systemctl start redis

# 安装 MySQL
yum -y install mariadb mariadb-devel mariadb-server
systemctl start mariadb
mysqladmin password "新密码"

# 创建数据库 Jumpserver 并授权
mysql
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
> flush privileges;
> exit

# 修改 Jumpserver 配置文件
cd /opt/jumpserver
cp config_example.py config.py
vim config.py   # 官方计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格

class DevelopmentConfig(Config):
    DEBUG = True
    DB_ENGINE = 'mysql'
    DB_HOST = '127.0.0.1'
    DB_PORT = 3306
    DB_USER = 'jumpserver'
    DB_PASSWORD = '123456'
    DB_NAME = 'jumpserver'
...
config = DevelopmentConfig()  # 确保使用的是刚才设置的配置文件

# 安装依赖
cd /opt/jumpserver/requirements/
pip install -r requirements.txt

# 生成数据库表结构和初始化数据
cd /opt/jumpserver/utils
bash make_migrations.sh

# 运行 Jumpserver
cd /opt/jumpserver
./jms start all  # 后台运行使用 -d 参数./jms start all -d
#新版本更新了运行脚本,使用方式./jms start|stop|status|restart all  后台运行请添加 -d 参数
运行不报错,请浏览器访问 http://ip:8080/ 默认账号: admin 密码: admin 页面显示不正常先不用处理,继续往下操作


# 安装 SSH Server 和 WebSocket Server: Coco
cd /opt
source /opt/py3/bin/activate
git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env   # 进入 coco 目录时将自动载入 python 虚拟环境
#首次进入 coco 文件夹会有提示,按 y 即可
# Are you sure you want to allow this? (y/N) y

# 安装依赖
cd /opt/coco/requirements
yum -y  install $(cat rpm_requirements.txt)
pip install -r requirements.txt -i https://pypi.org/simple

# 查看配置文件并运行
cd /opt/coco
cp conf_example.py conf.py  # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
./cocod start all           # 后台运行使用 -d 参数./cocod start -d
#新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
#启动成功后去Jumpserver 会话管理-终端管理(http://ip:8080/terminal/terminal/)接受coco的注册,如果页面显示不正常可以等部署完成后再处理。



# 安装 Web Terminal 前端: Luna
Luna 已改为纯前端,需要 Nginx 来运行访问
#访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译

cd /opt/
wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
tar xvf luna.tar.gz
chown -R root:root luna/
ls /opt/luna



# 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)
手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole

yum remove docker-latest-logrotate  docker-logrotate  docker-selinux dockdocker-engine
yum install -y yum-utils   device-mapper-persistent-data   lvm2

# 添加docker官方源
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce


# 国内部分用户可能无法连接docker官网提供的源,这里提供阿里云的镜像节点供测试使用
yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
rpm —import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
yum makecache fast
yum -y install docker-ce

systemctl start docker
systemctl status docker


# 注意:这里一定要改写一下本机的IP地址, 否则会出错,带宽有限, 下载时间可能有点长,可以喝杯咖啡。

docker run -d \
 -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
 -e JUMPSERVER_KEY_DIR=/config/guacamole/key \
 -e JUMPSERVER_SERVER=http://<填写本机的IP地址>:8080 \
 registry.jumpserver.org/public/guacamole:1.0.0
#这里镜像可以用搬运到网易仓库的:hub.c.163.com/leolan/guacamole:1.0.0

# 这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义一下。
再次强调:修改 JUMPSERVER_SERVER 环境变量的配置,填上 Jumpserver 的内网地址, 
启动成功后 去 Jumpserver-会话管理-终端管理 接受[Gua]开头的一个注册,如果页面显示不正常可以等部署完成后再处理



# 配置 Nginx 整合各组件
yum -y install nginx

vim /etc/nginx/nginx.conf

... 省略
# 把默认server配置块改成这样

server {
    listen 80;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /luna/ {
        try_files $uri / /index.html;
        alias /opt/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";
    }

    location /guacamole/ {
        proxy_pass       http://localhost:8081/;     # 如果guacamole安装在别的服务器,请填写它的ip
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        access_log off;
    }

    location / {
        proxy_pass http://localhost:8080;  # 如果jumpserver安装在别的服务器,请填写它的ip
    }
}

... 省略



nginx -t  # 如果没有报错请继续
systemctl start nginx
systemctl enable nginx

# 开始使用 Jumpserver
cd /opt/jumpserver
./jms status    # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver

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

# 如果安装了 Guacamole
docker ps       # 检查容器是否已经正常运行,如果没有运行请重新启动Guacamole
服务全部启动后,访问 http://ip ;默认账号: admin 密码: admin

如果部署过程中没有接受应用的注册,需要到Jumpserver 会话管理-终端管理 接受 Coco Guacamole 等应用的注册

参考:http://docs.jumpserver.org/zh/latest/step_by_step.html


Ubuntu

# 安装依赖包
apt-get update && apt-get -y upgrade
apt-get -y install wget libkrb5-dev libsqlite3-dev gcc make automake libssl-dev zlib1g-dev libmysqlclient-dev libffi-dev git


# 编译安装
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xvf Python-3.6.1.tar.xz  && cd Python-3.6.1
./configure && make && make install

# 建立 Python 虚拟环境(不扰乱原来的环境)
cd /opt
python3.6 -m venv py3
source /opt/py3/bin/activate
#看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]

# 自动载入 Python 虚拟环境配置
此项仅为懒癌晚期的人员使用,防止运行 Jumpserver 时忘记载入 Python 虚拟环境导致程序无法运行。使用autoenv

git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc
source ~/.bashrc


# 安装 Jumpserver
cd /opt/
git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env      # 进入 jumpserver 目录时将自动载入 python 虚拟环境
#首次进入 jumpserver 文件夹会有提示,按 y 即可
# Are you sure you want to allow this? (y/N) y

# 安装依赖 RPM 包
cd /opt/jumpserver/requirements
apt-get -y install $(cat deb_requirements.txt)  # 如果没有任何报错请继续

# 安装 Python 库依赖
pip install -r requirements.txt  # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续

# 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
apt-get -y install redis-server

# 安装 MySQL
apt-get -y install mysql-server  # 安装过程中注意输入数据库 root账户 的密码

# 创建数据库 Jumpserver 并授权
mysql -uroot -p
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
> flush privileges;
> exit

# 修改 Jumpserver 配置文件
cd /opt/jumpserver
cp config_example.py config.py
vi config.py  #官方计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格

class Config:
...
    # 找到如下所示,修改 sqlite3 为 mysql, 请勿直接复制粘贴
    # DB_ENGINE = 'sqlite3'
    # DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')

    DB_ENGINE = 'mysql'
    DB_HOST = '127.0.0.1'
    DB_PORT = 3306
    DB_USER = 'jumpserver'
    DB_PASSWORD = '123456'
    DB_NAME = 'jumpserver'

    # 到此结束,其他内容如果你不知道用途请勿更改
...
config = DevelopmentConfig()

# 安装依赖
cd /opt/jumpserver/requirements/
pip install -r requirements.txt

# 生成数据库表结构和初始化数据
cd /opt/jumpserver/utils
bash make_migrations.sh

# 运行 Jumpserver
cd /opt/jumpserver
./jms start all  # 后台运行使用 -d 参数./jms start all -d
#新版本更新了运行脚本,使用方式./jms start|stop|status|restart all  后台运行请添加 -d 参数
运行不报错,请浏览器访问 http://ip:8080/ 默认账号: admin 密码: admin 页面显示不正常先不用处理,继续往下操作


# 安装 SSH Server 和 WebSocket Server: Coco
cd /opt
source /opt/py3/bin/activate
git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env   # 进入 coco 目录时将自动载入 python 虚拟环境
#首次进入 coco 文件夹会有提示,按 y 即可
# Are you sure you want to allow this? (y/N) y

# 安装依赖
cd /opt/coco/requirements
pip install -r requirements.txt

# 查看配置文件并运行
cd /opt/coco
cp conf_example.py conf.py  # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
./cocod start all           # 后台运行使用 -d 参数./cocod start -d
#新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
#启动成功后去Jumpserver 会话管理-终端管理(http://ip:8080/terminal/terminal/)接受coco的注册,如果页面显示不正常可以等部署完成后再处理。


# 安装 Web Terminal 前端: Luna
Luna 已改为纯前端,需要 Nginx 来运行访问
#访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译

cd /opt/
wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
tar xvf luna.tar.gz
chown -R root:root luna/
ls /opt/luna


# 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)
手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole
# 安装 docker  参考官方教程 https://docs.docker.com/install/linux/docker-ce/ubuntu/

apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual      # Ubuntu 14.04 需要先执行这一行

# 下面是安装Docker;不用docker-ce也行;直接apt install -y docker.io简单粗暴。

apt-get remove docker docker-engine docker.io
apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 如果 docker 官网无法下载可以使用国内其他镜像源(以阿里云为例)
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

apt-get update
apt-get install docker-ce


# 注意:这里一定要改写一下本机的IP地址, 否则会出错,带宽有限, 下载时间可能有点长,可以喝杯咖啡。

docker run -d \
 -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
 -e JUMPSERVER_KEY_DIR=/config/guacamole/key \
 -e JUMPSERVER_SERVER=http://<填写本机的IP地址>:8080 \
 registry.jumpserver.org/public/guacamole:1.0.0
#这里镜像可以用搬运到网易仓库的:hub.c.163.com/leolan/guacamole:1.0.0

# 这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义一下。
再次强调:修改 JUMPSERVER_SERVER 环境变量的配置,填上 Jumpserver 的内网地址, 
启动成功后 去 Jumpserver-会话管理-终端管理 接受[Gua]开头的一个注册,如果页面显示不正常可以等部署完成后再处理



# 配置 Nginx 整合各组件
apt-get -y install nginx

vi /etc/nginx/site-enabled/default

server {
    listen 80;
    server_name _;

    ## 新增如下内容,以上内容是原文内容,请从这一行开始复制
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /luna/ {
        try_files $uri / /index.html;
        alias /opt/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/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /guacamole/ {
        proxy_pass       http://localhost:8081/;    # 如果guacamole安装在别的服务器,请填写它的ip
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        access_log off;
    }

    location / {
        proxy_pass http://localhost:8080;
    }
    ## 到此结束,请不要继续复制了

}


nginx -t  # 如果没有报错请继续
service nginx restart


# 开始使用 Jumpserver
cd /opt/jumpserver
./jms status    # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver

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

# 如果安装了 Guacamole
docker ps       # 检查容器是否已经正常运行,如果没有运行请重新启动Guacamole
服务全部启动后,访问 http://ip ;默认账号: admin 密码: admin

如果部署过程中没有接受应用的注册,需要到Jumpserver 会话管理-终端管理 接受 Coco Guacamole 等应用的注册

Docker

# 搬运官方镜像到163镜像仓库,加装了一些软件包
docker run --privileged -d -p 8080:80 hub.c.163.com/leolan/jumpserver:1.0.1

# 官方(速度慢)
docker run -d -p 8080:80 registry.jumpserver.org/public/jumpserver:1.0.0

额外环境变量

Dockerfile:https://github.com/jumpserver/Dockerfile

参考:http://docs.jumpserver.org/zh/docs/dockerinstall.html


参考资料:
堡垒机集群搭建:http://www.tuicool.com/articles/vI7VzyB

(●゚ω゚●)