23.5 jumpserver介绍
23.6 安装jumpserver
23.7 登录jumpserver
23.8 创建管理用户
扩展:
jumpserver安装问题
http://ask.apelearn.com/question/17502
23.5 jumpserver介绍
1.官网www.jumpserver.org
2.Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理
#jumpserver非常适合运维人员,不管是二次开发。
#国人开发,开源
3.Auth 统一认证
4.CMDB 资产管理
5.统一授权
6.日志审计
7.自动化运维(ansible)
8.最新版v0.4.0,基于python3.6, django 1.11,目前还未开发完成,所以我们接下来将要安装v0.3.2
#如果直接在centos6或7上直接安装最新版,会有一些问题。下一节会讲怎么安装
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.6 安装jumpserver
Jumpserver安装(0.4.0)
#因为使用了(docker还未学习)并0.4版本还未完全开发,所以主要学习0.32版本
yum install -y docker //首先安装docker
systemctl enable docker
systemctl start docker //启动docker服务
curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose //安装docker-compose
chmod 755 /usr/local/bin/docker-compose
git clone https://github.com/jumpserver/jumpserver.git //下载jumpserver源码
cd jumpserver
配置docker加速器 http://ask.apelearn.com/question/15126
检查是否有监听8080端口的服务,如果有关闭
screen//进入到一个虚拟终端
docker-compose up //使用docker-compose安装jumpserver
Jumpserver安装(0.3.2)
#不需要安装(借助于)docker
1.官方文档https://github.com/jumpserver/jumpserver/wiki/v0.3.2-%E5%9F%BA%E4%BA%8E-RedHat-%E7%9A%84%E7%B3%BB%E7%BB%9F
2.yum install -y git
3.cd /home //要到一个空间大的目录下面
#jumpserver会占用一定的空间
4.git clone https://github.com/jumpserver/jumpserver.git
#地址为github官方的jumpserver的地址
5.git checkout master
6.cd jumpserver/install
7.python install.py
若你的机器已经安装过mysql,可以先创建jumpserver库以及对应的用户名密码,若没有安装就让它自动安装即可
安装过程中还需要设置一下使用的第三方邮件,建议你去申请一个免费的163邮箱
我的163邮箱smtp.163.com aming_test@163.com 8lFjprwrfEv1c
实例:(0.32版本)
首先要把不需要的服务停掉
[root@axinlinux-01 ~]# systemctl stop mongdod
[root@axinlinux-01 ~]# systemctl disable mongod
gitlab也需要关闭
[root@axinlinux-01 ~]# yum install git #如果下载的时候比较慢,可以将不相关的repo文件停掉
[root@axinlinux-01 ~]# cd /etc/yum.repos.d/ #怎么停掉呢?cd到/etc/yum.repos.d目录下
[root@axinlinux-01 yum.repos.d]# ls #将不相关的repo文件停掉。就是改个名字
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo mongo.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo gitlab_gitlab-ce.repo zabbix.repo
[root@axinlinux-01 yum.repos.d]# mv gitlab_gitlab-ce.repo gitlab_gitlab-ce.repo.bak #这样将不相关的停掉
[root@axinlinux-01 yum.repos.d]# mv mongo.repo mongo.repo.bak
[root@axinlinux-01 yum.repos.d]# mv zabbix.repo zabbix.repo.bak
以下操作是解决一系列问题之后的步骤:
1.cd /opt #建议不要到root或home下,容易出问题
2.https://github.com/jumpserver/jumpserver/tree/0.3.3 到这个地址下,下载zip。因为克隆的话出问题克隆不下来
3.unzip jumpserver-0.3.3.zip #然后解压这个zip
4.cd jumpserver-0.3.3 #cd 进去
5.cd install/ #再cd到install目录下
6.python install.py #执行install.py
注意:
1. 安装过程中要求输入数据库密码时,直接回车就行 2. 完成安装后,请访问web,继续查看后续文档 3. 如果启动失败,请返回上层目录,手动运行./service.sh restart启动 4. 默认账号密码 admin 5Lov@wife
请输入您服务器的IP地址,用户浏览器可以访问 [192.168.208.136]: #回车
是否安装新的MySQL服务器? (y/n) [y]: n #因为之前就安装了mysql,所以就不在安装了
请输入数据库服务器IP [127.0.0.1]: #回车
请输入数据库服务器端口 [3306]: #回车
请输入数据库服务器用户 [jumpserver]: #此时可以在开一个终端,来创建以及授权(点击xshell标签右键>复制ssh渠道。
问题点:但是,阿鑫在做的时候,到下面管理员那一步骤的时候报错了,报错信息如下:
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE6\\x9C\\xBA\\xE6\\x88\\xBF' for column 'name' at row 1")
问题根源:网上查找同类问题,应该是mysql数据编码的问题,django连接的数据库编码字符集要求utf8,不然报错
解决方法的连接:https://cloud.tencent.com/developer/article/1139768
解决方法:
打开mysql数据库的配置文件
[[email protected] ~]# vim /etc/my.cnf [mysqld] #在mysqld模块下增加以下两个参数 character_set_server=utf8 init_connect='SET NAMES utf8'
[root@localhost ~]# /etc/init.d/mysqld restart
注意:新版MySQL(如:5.5)或MariaDB等,mysqld启动时可能会遇到“[ERROR] /usr/libexec/mysqld: unknown variable ‘default_character_set=utf8’”的错误;就应该在[mysqld]中用 character_set_server=utf8 替换掉 default_character_set=utf8
2.删除原来创建的jumpsrvice问题数据库
create database jumpserver;
3.再打开mysql数据库创建django连接的数据库
[root@localhost ~]# mysql -uxxxx -pxxxxxx mysql> show variables like'character%'; //运行这语句查看一下character_set_database参数是否utf8 mysql> set character_set_database=utf8; //如果不是utf8,运行此语句设置一下 +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ mysql> create database jumpservice; //之后就可以正常创建jumpservice数据库了
mysql> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123';
4.[[email protected] install]# python install.py //重新执行命令即可安装成功
另外一种情况,也许是用户名或者库授权有问题,建议删除jumpserver库,重新建立一个新的并授权。
> create database jumpserver; > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'asd9577';
请输入数据库服务器密码: jump123jump
请输入使用的数据库 [jumpserver]:
连接数据库成功
请输入SMTP地址: smtp.163.com
请输入SMTP端口 [25]:
请输入账户: wangxinlinux@163.com
请输入密码: wangxin789
(535, 'Error: authentication failed')
是否跳过(y/n) [n]? : y
请登陆邮箱查收邮件, 然后确认是否继续安装
是否继续? (y/n) [y]: y
请输入管理员用户名 [admin]: #回车
请输入管理员密码: [5Lov@wife]: #回车
请再次输入管理员密码: [5Lov@wife]: #回车
Starting jumpserver service: [ 确定 ]
安装成功,Web登录请访问http://ip:8000, 祝你使用愉快。
请访问 https://github.com/jumpserver/jumpserver/wiki 查看文档
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.7 登录jumpserver
Jumpserver使用
1.浏览器输入ip:8000 访问jumpserver
2.默认用户名是admin,密码是5Lov@wife
3.点击用户管理,选择用户,点击Administrator那一行右侧的更新,设置密码
创建用户组 运维
创建用户 aming
点击设置,默认管理用户,该用户为管理员用户,应该有sudo权限,需要在每一台客户机上创建该用户(用户名自定义,jump)
在一台linux机器上生成一个密钥对,用来作为该管理用户的密钥对
把私钥粘贴到默认密钥下面
实例:
以上:
资产管理::也就是cmdb了。之前说到jumpserver有cmdb的功能。就在这来体现
资产组:比如开发的资产组、测试的资产组、线上的资产组等等
产看资产:资产组里对应的机器,不仅仅有服务器,还有交换机、路由器等等,都可以列到这里面来
查看机房:利用机房去划分
以上:
授权管理:系统用户:系统用户就是我们要设置一个跳板机,跳板机要登录到远程服务器上去,我们把它叫做客户机。那客户机要登录,你首先要有一个用户。这个用户就是系统用户
jumpserver里面有三种用户:第一种就是登录jumpserver的用户
第二种就是登录客户机的用户。也就是上面说的系统用户
第三种在设置里,里有一个默认管理用户。我们要想实现自动化,想批量的到客户机上去执行一些命令,那就要有一个用户去执行。比如我要给客户机创建一个系统用户,也要有一个有权限的管理员用户去做呀。这个用户就叫做管理用户。这个用户平时不用,管理机器的时候才会用。你想想jumpserver要想跟你的机器去通信,做一些事情,那肯定要有一个有权限的用户才行,也是在客户机上创建的,但是要在jumpserver里面去配置一下,比如密钥
授权管理:授权规则:就是那些用户有权限连,哪一组机器或者哪一些机器。去给他划分好严格的权限。比如运维组的可以去连所有的机器。那数据中心的只有数据中心的几台机器,其他的不给权限
以上
日志审计:就是比如我看看你的额登录历史,都有谁登录过。还有执行过的批量命令,上传下载的东西。命令里有一个命令回放的功能
以上
上传下载:上传和下载文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.8 创建管理用户
在客户机上创建jump用户,并设置sudo权限,把刚刚生成的密钥对里面的公钥放到该客户机的jump用户家目录.ssh/authorized_keys文件里
资产管理,查看资产组,添加资产组(如,dev)
资产管理,查看资产,添加资产,填写各项信息
授权管理,系统用户,添加系统用户,该用户为我们登录所有客户机的用户
授权规则,添加规则,创建授权规则
管理用户需要到每一台客户机上去创建,而且也要在jumpserver服务端(界面)设置好这个用户,叫什么,以及对应的密钥(界面上指的是私钥)
如果我们要密钥登录一台机器的话,本机要有一个私钥,对方要有一个公钥。
[root@axinlinux-04 ~]# cd .ssh/ #在本机去生成一个密钥对
[root@axinlinux-04 .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts
[root@axinlinux-04 .ssh]# ssh-keygen -f jump #-f指定密钥对的名字
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): #回车
Enter same passphrase again: #回车
Your identification has been saved in jump.
Your public key has been saved in jump.pub.
The key fingerprint is:
SHA256:zwzE4unsryGYSGNjjSfc206E0rdU1lCkrlPxQfm7trM root@axinlinux-04
The key's randomart image is:
+---[RSA 2048]----+
| .o+. |
| .=. |
| .=oo. |
|. = ..++o .. |
| @ * +ooS. . |
|+.*o*o+ = . |
|. o..*+ + . |
| oo.. + |
| .oo. .E+ |
+----[SHA256]-----+
[root@axinlinux-04 .ssh]# ls
authorized_keys id_rsa id_rsa.pub jump jump.pub known_hosts #会有两个文件 jump jump.pub
[root@axinlinux-04 .ssh]# cat jump #需要的是jump(私钥),把它粘贴要界面下位置
管理用户是指客户端上的如root等高权限账号(或拥有NOPASSWD: ALL sudo权限),用来推送新建系统用户。相当于说这个管理用户可以做各种各样的操作
接下来,我们到对应的客户机上去创建这个用户(jump管理用户)
[root@dazuoye02-01 ~]# useradd jump #在这台客户机上,创建jump用户,这个用户作为管理账户。以后每增加一台机器都要增加这个用户
[root@dazuoye02-01 ~]# su - jump #接下来切换到jump用户
[jump@dazuoye02-01 ~]$ mkdir .ssh #创建authorized_keys
[jump@dazuoye02-01 ~]$ vim .ssh/authorized_keys #服务端linux上生成的公钥(jump.pub)粘贴到这个文件里来
[root@axinlinux-04 .ssh]# cat jump.pub #将服务端linux上刚才生成的这个公钥粘贴到上面那个文件里
[jump@dazuoye02-01 ~]$ chmod 700 .ssh/ #修改目录的权限为700
[jump@dazuoye02-01 ~]$ chmod 400 .ssh/authorized_keys #修改文件的权限400
检查selinux和iptables
[root@axinlinux-04 .ssh]# ssh -i jump jump@192.168.208.135 #使用ssh -i来指定使用jump秘钥来登录客户机
The authenticity of host '192.168.208.135 (192.168.208.135)' can't be established.
ECDSA key fingerprint is SHA256:ipSyrFLdSRyMxARq/E/2S09fJSD9dz+R/eSm/baC434.
ECDSA key fingerprint is MD5:60:35:cf:94:59:97:4e:05:ec:3b:ee:25:e3:d6:e2:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.208.135' (ECDSA) to the list of known hosts.
Last login: Sat Dec 1 00:00:16 2018
[jump@dazuoye02-01 ~]$