一、jumpserver介绍
官网www.jumpserver.org
Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业。
高效,用户、资产、权限、审计,管理。
Auth 统一认证
CMDB 资产管理
统一授权
日志审计
自动化运维(ansible)
v1.4.4,基于python3.6, django 1.11,目前还未开发完成,所以接下来将要安装v1.4.4 。
二、安装jumpserver
安装(1.4.4)
首先进入GitHub,左上角搜索jumpserver,搜出来了:
jumpserver/jumpserver
Jumpserver是全球首款完全开源的堡垒机,是符合 4A 的专业运维审计系统。
点击进入,选择标签,可以看到最新版本到了v1.4.10,往下看,可以看到安装及使用指南,点击step by step安装文档→一站式、分布式安装文档→一体化部署文档(基于CentOS 7)→在线安装文档。
我这里使用的是centos7,先yum update -y将centos升级到最新版本。
内存至少2G,不然跑不起来,MySQL高于5.6;
放行80、8080、2222端口,或者关掉firewalld:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=2222/tcp --permanent # firewall-cmd --zone=public --add-port=8080/tcp --permanent
不让它开机启动;把selinux关闭。
# 修改字符集:
# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 # export LC_ALL=zh_CN.UTF-8 # echo $LC_ALLzh_CN.UTF-8 # cat /etc/locale.conf //查看字符集是否为UTF-8 LANG="zh_CN.UTF-8"
1、准备Python3和虚拟环境
# 编译或者yum安装都可以, 版本要求参考环境要求,centos默认自带的Python是2.7,所以需要额外安装一个Python3.6。
安装Python3.6、Redis、MySQL
# yum update -y 将系统升级到最新,update不行就用yum upgrade -y # cat /etc/redhat-release //此时最新版7.7 CentOS Linux release 7.7.1908 (Core) # yum install -y wget epel-release gcc git # yum install -y python36 python36-devel # yum install -y redis # systemctl enable redis # systemctl start redis # yum install -y mariadb mariadb-devel mariadb-server # systemctl enable mariadb # systemctl start mariadb # mysql -uroot > create database jumpserver default charset 'utf8'; > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'weakpassword'; > flush privileges; > quit
2、创建py3虚拟环境
# cd /opt/ # python3.6 -m venv /opt/py3
3、载入py3的虚拟环境
# 每次操作 jumpserver 都需要使用下面的命令载入 py3 虚拟环境 # source /opt/py3/bin/activate # 部分系统可能会提示 source: not found , 可以使用 "." 代替 "source" (py3) [root@wbs opt]# //载入以后会有一个py3的前缀
4、获取jumpserver代码
$ cd /opt $ git clone --depth=1 https://github.com/jumpserver/jumpserver.git # 如果没有安装 git 请先安装 # echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env //进入jumpserver目录时自动载入py3虚拟环境。
5、安装依赖包
$ cd /opt/jumpserver/requirements $ yum install -y $(cat rpm_requirements.txt) 安装Python库依赖: $ pip install --upgrade pip setuptools //把setup工具升级 $ pip install -r requirements.txt # 确保已经载入 py3 虚拟环境, 中间如果遇到报错一般是依赖包没装全, 可以通过 搜索引擎 解决 pip命令类似于系统里的yum
6、修改配置文件
$ cd /opt/jumpserver $ cp config_example.yml config.yml $ vim config.yml # 注意 SECRET_KEY 和 BOOTSTRAP_TOKEN 不能使用纯数字字符串 定义SECRET_KEY,不能为空。使用这条命令生成随机字符串: cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo 到命令行输出后再复制粘贴进去。 定义BOOTSTRAP_TOKEN,不能为空。使用这条命令生成随机字符串: cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo # MySQL or postgres setting like: # 使用Mysql作为数据库 DB_ENGINE: mysql DB_HOST: 127.0.0.1 DB_PORT: 3306 DB_USER: jumpserver DB_PASSWORD: waakpassword //定义密码 DB_NAME: jumpserver #将Redis下面三行的#号去掉 # Use Redis as broker for celery and web socket # Redis配置 REDIS_HOST: 127.0.0.1 REDIS_PORT: 6379 REDIS_PASSWORD: REDIS_DB_CELERY: 3 REDIS_DB_CACHE: 4
7、生成数据库表结构和初始化数据
# cd /opt/jumpserver/utils # sh make_migrations.sh
8、运行jumpserver
$ cd /opt/jumpserver $ ./jms start -d #加-d 参数在后台运行 ./jms start -d,不然在前台会输出很多东西。 使用方式:./jms start|stop|status|restart # netstat -lntp |grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 27161/python3.6 #如果想让它开机启动,把这一条命令加到/etc/rc.local里去。 # vim /etc/rc.local source /opt/py3/bin/activate; cd /opt/jumpserver; ./jms start -d &> /dev/null
此时可以到浏览器访问本机的IP:8080端口,可以看到jumpserver的登录页面。如果看不到页面,可能是firewalld没放行,线上机器想办法把端口放行。默认账号和密码:admin。
9、部署koko组件
$ cd /opt # 访问 https://github.com/jumpserver/koko/releases 下载对应 release 包并解压到 /opt目录 $ wget https://github.com/jumpserver/koko/releases/download/1.5.3/koko-master-linux-amd64.tar.gz $ tar xf koko-master-linux-amd64.tar.gz $ chown -R root:root kokodir $ cd kokodir $ cp config_example.yml config.yml $ vim config.yml # BOOTSTRAP_TOKEN 需要从 jumpserver/config.yml 里面获取, 保证一致 $ ./koko -d # 一定要加-d让它在后台运行,运行后可以netstat -lntp查看到端口2222和5000起来了。
10、安装luna组件
$ cd /opt $ wget https://github.com/jumpserver/luna/releases/download/1.5.3/luna.tar.gz $ tar xf luna.tar.gz $ chown -R root:root luna
11、配置Nginx整合各组件
$ yum install -y nginx $ vim /etc/nginx/nginx.conf ...原内容 include /etc/nginx/conf.d/*.conf; #注释掉整个server{} # server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/nginx/html; # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # error_page 404 /404.html; # location = /40x.html { # } # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } ...
$ rm -rf /etc/nginx/conf.d/default.conf $ vim /etc/nginx/conf.d/jumpserver.conf server { listen 80; 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 /koko/ { proxy_pass http://localhost:5000; 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 /guacamole/ { proxy_pass http://localhost:8081/; 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 /ws/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8070; proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
$ nginx -t # 确保配置没有问题, 有问题请先解决 $ systemctl start nginx $ systemctl enable nginx # 测试连接 $ ssh -p2222 admin@192.168.149.131 密码admin,如果能登录代表部署成功,web界面如不能登录,换个浏览器试试。
三、登录jumpserver
1、更改密码
web界面admin登录→个人信息→更改密码
更改密码后重新登录。
2、密码登录
新建一个会话,主机名定义好IP,端口2222,用户名密码定义好,登录即可直接进入jumpserver。
3、密钥登录
# cat .ssh/authorized_keys
把authorized_keys的公钥放到web界面中个人信息的ssh密钥里,提交。
再到命令行下就可以通过密钥登录了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。