开源跳板机,jumpserver受屈一指,如果你从来没用过跳板机,简单来说后面我们要实现的效果就是在WEB界面上统一管理Linux和Windows机器
docker可采用阿里云安装,docker-compose是一个二进制文件可直接放到 /usr/bin 目录下,别忘记加上可执行权限
后面的安装步骤,我参考官方文档修改而来,比官方文档更适合新手阅读
cat /tmp/tmp.sh
Version=v2.3.0
docker pull jumpserver/jms_mysql:${Version}
docker pull jumpserver/jms_redis:${Version}
docker pull jumpserver/jms_core:${Version}
docker pull jumpserver/jms_koko:${Version}
docker pull jumpserver/jms_guacamole:${Version}
docker pull jumpserver/jms_nginx:${Version}
bash -x /tmp/tmp.sh
如果无法下载或者下载太慢,可以配置镜像加速测试了几个加速站点,发现只有阿里云加速,加速jumpservier下载比较好使
下面的Dokcerfile完全照搬官方,未做任何修改,相信大家有些基础都能看懂,里面有一些shell的变量,后面通过脚传进去
cat docker-compose.yml
version: '3'
services:
mysql:
image: jumpserver/jms_mysql:${Version}
container_name: jms_mysql
restart: always
tty: true
environment:
DB_PORT: $DB_PORT
DB_USER: $DB_USER
DB_PASSWORD: $DB_PASSWORD
DB_NAME: $DB_NAME
volumes:
- mysql-data:/var/lib/mysql
networks:
- jumpserver
redis:
image: jumpserver/jms_redis:${Version}
container_name: jms_redis
restart: always
tty: true
environment:
REDIS_PORT: $REDIS_PORT
REDIS_PASSWORD: $REDIS_PASSWORD
volumes:
- redis-data:/var/lib/redis/
networks:
- jumpserver
core:
image: jumpserver/jms_core:${Version}
container_name: jms_core
restart: always
tty: true
environment:
SECRET_KEY: $SECRET_KEY
BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
LOG_LEVEL: $LOG_LEVEL
DB_HOST: $DB_HOST
DB_PORT: $DB_PORT
DB_USER: $DB_USER
DB_PASSWORD: $DB_PASSWORD
DB_NAME: $DB_NAME
REDIS_HOST: $REDIS_HOST
REDIS_PORT: $REDIS_PORT
REDIS_PASSWORD: $REDIS_PASSWORD
depends_on:
- mysql
- redis
volumes:
- core-data:/opt/jumpserver/data
networks:
- jumpserver
koko:
image: jumpserver/jms_koko:${Version}
container_name: jms_koko
restart: always
privileged: true
tty: true
environment:
CORE_HOST: http://core:8080
BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
LOG_LEVEL: $LOG_LEVEL
depends_on:
- core
- mysql
- redis
volumes:
- koko-data:/opt/koko/data
ports:
- 2222:2222
networks:
- jumpserver
guacamole:
image: jumpserver/jms_guacamole:${Version}
container_name: jms_guacamole
restart: always
tty: true
environment:
JUMPSERVER_SERVER: http://core:8080
BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
GUACAMOLE_LOG_LEVEL: $LOG_LEVEL
depends_on:
- core
- mysql
- redis
volumes:
- guacamole-data:/config/guacamole/data
networks:
- jumpserver
nginx:
image: jumpserver/jms_nginx:${Version}
container_name: jms_nginx
restart: always
tty: true
depends_on:
- core
- koko
- mysql
- redis
volumes:
- core-data:/opt/jumpserver/data
ports:
- 80:80
networks:
- jumpserver
volumes:
mysql-data:
redis-data:
core-data:
koko-data:
guacamole-data:
networks:
jumpserver:
官方的启动步骤略复杂(当然更适合生产环境,精细化控制),我们直接从简,需要的变量都搁到一个shell脚本里
同样下面的环境变量里的值,从官方搬来未做任何修改,本文不考虑一些安全细节问题,快速看到效果
cat jumpserver-install.sh
# 版本号可以自己根据项目的版本修改
export Version=v2.3.0
# MySQL
export DB_HOST=mysql
export DB_PORT=3306
export DB_USER=jumpserver
export DB_PASSWORD=nu4x599Wq7u0Bn8EABh3J91G
export DB_NAME=jumpserver
# Redis
export REDIS_HOST=redis
export REDIS_PORT=6379
export REDIS_PASSWORD=8URXPL2x3HZMi7xoGTdk3Upj
# Core
export SECRET_KEY=B3f2w8P2PfxIAS7s4URrD9YmSbtqX4vXdPUL217kL9XPUOWrmy
export BOOTSTRAP_TOKEN=7Q11Vz6R2J6BLAdO
export LOG_LEVEL=ERROR
##
# SECRET_KEY 保护签名数据的密匙, 首次安装请一定要修改并牢记, 后续升级和迁移不可更改, 否则将导致加密的数据不可解密。
# BOOTSTRAP_TOKEN 为组件认证使用的密钥, 仅组件注册时使用。组件指 koko、guacamole
docker-compose up
启动
bash -x jumpserver-install.sh
浏览器访问: http://<容器所在服务器IP>
SSH 访问: ssh -p 2222 <容器所在服务器IP>
默认管理员账户 admin 密码 admin
新版本首次登陆必须修改密码 admin123456 (根据自己情况,自行修改成其它)
下面两张图是本人已经配置好机器的效果图 截图里我自己做了内网穿透哈,大家用80端口访问即可
我们准备一台测试机器
192.168.31.100
root / 123456
1 添加管理用户
管理用户是被控机器上的root用户
2 创建节点
官方文档里就说明要创建节点,我们就按照官方文档走,节点里面可以存放一组机器,这一组机器可以批量授权,这一组机器拥有同一个管理用户(比如都是 root / 123456 登录)
如下图,在Default上右键
3 创建资产
上图马赛克是我之前创建好的,为了不实现干扰,抹去
4 创建系统用户
系统用户是用来登录资产的用户,是linux上已经有的用户,有自动推送功能可以自动推送系统用户,因为前面创建了管理用户,不过我们最好自己登录到相关Linux机器上把系统用户创建出来,这里我们使用的系统用户和管理用户一样(也可以不一样),都是root
5 资产授权
完成授权,才能在web terminal里登录
5 登录机器
Windows资产是利用RDP协议(默认3389端口)远程连接的,操作步骤跟Linux类似,此处只简要概括关键步骤
开启远程桌面
右键我的电脑 >> 远程设置 >> 允许远程连接到此计算机
提前把windows防火墙,360啥到都关停,退出,排除干扰 ,我这里是用virtualbox启动一台win10虚拟机测试
创建一个管理员账号(可选)
已经有账号可以不用创建,这个账号最好有密码,密码为空可能会出现一些未知问题,另外windows桌面版(比如win10)不支持多人同时登录(不同账号也不行),在远程的时候最好提前把Windows上的账号注销,让Windows停留在登录账号的页面
右键我的电脑 >> 管理 >> 本地用户和组 >> 右键用户
我这里创建的用户是 kyle / kyle
接着右键组 >> 右键Administrator >> 属性 >> 把新创建的用户添加到管理员组里
其它步骤和Linux连接类似,管理账号和系统账号都用 kyle / kyle (也就是刚才创建的)
读者按照上面文档的步骤,或者说官方步骤,也许已经成功连上机器了,不过我相信读者十有八九会有困惑:jumpserver里各种用户到底什么关系 ?下面我尝试用文字解释下
管理用户是被控制机器上的root用户(对于windows来说就是需要授权到Administrator分组里)
系统用户是用来登录被控制机器的用户,可以不是root用户,也可以是root用户,只要这个用户能登录机器就行(建议提前把这个用户创建出来)
创建新资产,需要给这个资产选择管理用户
创建新授权,需要给这个授权选择一个系统用户
系统用户可以直接删掉,但是管理用户不能删掉,一个资产(一台机器),必须配置一个管理用户,在创建资产的时就需要选择
多个机器可以共用一个管理用户吗 ? 答:可以(只是恰巧账号密码相同)
多个机器可以公用一个系统用户吗 ? 答:可以(只是恰巧账号密码相同)
综上,如果我们现在拿到一台新的Linux机器,要给它配到jumpserver中管理,我们的流程是
创建这台机器的管理用户(要么是root,要么有sudo权限,登录方式可以是账号密码也可以是密钥) >> 创建资产(在页面里会提示你选择该资产的管理用户) >> 创建系统用户(可以是root可以不是root) >> 配置授权
步骤都正确,但是jumpserver资产授权那块一直是 激活中 ,web终端里面没有显示 ?
检查每个服务器(包括jumpserver自身)之间的时间是否同步,如果不同步一定要配置同步,参考命令
yum install ntpdate -y
echo '*/10 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com' >> /var/spool/cron/root
chmod 0600 /var/spool/cron/root
vi /etc/ssh/sshd_config
UseDNS no
systemctl restart docker
docker restart jms_koko
先取消激活,然后再删除
JUMPSERVER之问题总结 https://www.freesion.com/article/6309414395/
https://jumpserver.readthedocs.io/zh/master/install/step_by_step/