jumpserver的简单安装使用

这篇具有很好参考价值的文章主要介绍了jumpserver的简单安装使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

服务器的管理停留在xshell 登陆管理的时代,主机设备数量少,单人操作的时候还能满足使用。现在的主机数量不多不少也有大几十台。然后就面临的多人的登陆与管理。过去都是直接给账户密码。但这样就会面临操作审计的问题。虽然给的机器都是测试环境的,但是追溯操作人,审计也还是大问题。另外就是数据库的远程操作。小伙伴都使用navicat操作。也会面临很多的问题: 首位还是操作审计,其次就是远程IP的信任,添加安全组这中操作就很烦人。迫切的需要一个中间操作的设备,就是堡垒机。jumpserser是一款优秀的堡垒机。很早之前就尝试使用过。比如当时疫情开始的时候远程办公。由于一些公司保密原因,只允许远程操作公司电脑进行工作,不允许用户上传下载,当时就使用了jumpserver管理(windows环境)。最近又看了一眼jumpserver的文档,发现支持了kubernetes and mysql的管理。正好体验一下呢!

jumpserver的简单安装

前提准备:

参照官方文档:https://docs.jumpserver.org/zh/v3/

腾讯云cvm rocky9操作系统为例:

关于操作系统 rocky9 腾讯云服务器:
image.png

数据库的创建and授权:

早些时候创建的TDSQL-C数据库,创建了数据库and 用户,并授权,如下:

image.png
erQd7Z02Pn.png
创建用户设置密码并授权:
image.png

创建redis 数据库 and设置密码:

image.png

在线安装:

自定义主机名:

首先先自定义一下主机名,个人习惯。也可以忽略

hostnamectl set-hostname jumpserver

执行一键安装脚本

主线版本现在是v2 v3。这里直接安装了V3.10版本(latest,当前最新吧).当然了可以自定义初始化先把mysql, redis设置为咱们前面开通的。这里偷懒了。先一键安装,后面再去修改!
https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/online_install/

curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

5HRjrdCMFf.png
等待安装配置docker.下载docker 镜像,初始化数据库并启动容器:
0pIMQZSpqG.png
image.png
等待容器running:

docker ps

jmsctl status

image.png
这个时候已经默认可以web登陆了(当然了dns默认解析到了此CVM,域名方式访问)。不先进入系统,先做一下自定义配置再进入系统…

自定义配置:

mysql and redis使用外部配置:

自定义修改config.txt中mysql redis配置:

vim /opt/jumpserver/config/config.txt

5wrWtmcCdW.png
image.png

重启所有服务:

jmsctl命令拿来用了:

jmsctl restart

image.png

jmsctl status

image.png
有强迫症不想看到jms_mysql jms_redis服务?

jmsctl status
docker stop jms_mysql jms_redis

image.png

web访问并修改默认密码:

浏览器访问自定义域名,默认用户名密码应该是admin admin?
image.png
修改自定义密码:
2KOaThIg9G.png
image.png
image.png
重新登陆控制台:
image.png
登陆页面显示不安全…继续强迫症https!
image.png

https证书配置:

参照:https://kb.fit2cloud.com/?p=152
先上传证书到 /opt/jumpserver/config/nginx/cert/目录下:
img_v2_e3c4a65e-bc25-47fb-ab34-4caa95f6da4g.png
修改/opt/jumpserver3/config/config.txt 开启https访问:
image.png

jmsctl restart
jmsctl status

image.png
https方式访问web地址:
image.png
控制台基本是如下这样(图后截的忽略):
image.png

jumpserver的简单使用:

比较关心常用的资产管理:
image.png
尝试一下主机and数据库and 云服务(kubernetes)的管理!
image.png

主机为例:

创建资产

创建-选择平台Linux**(资产IP为10.0.4.18):
image.png
输入
名称 IP/主机 节点选择默认的/Default**
image.png
添加账号,密码方式选择了ssh密钥:
image.png

资产授权:

点击权限管理-资产授权,对10.0.4.18资源进行授权
image.png
image.png

点击提交:
image.png

切换到工作台验证:

左侧边栏,点击工作台切换:
image.png
web终端登陆验证:
image.png
image.png

继续添加一个node

开始以为一个账户可以用于多个资产尝试了一下失败了…创建资产的时候还看到了模板,就想创建一个模板尝试一下:
首先创建一个账号模板:
image.png
创建10.0.4.68的资产选择账号模板:
image.png
web cli登陆验证:
image.png
普通用户权限忽略了就先

数据库的添加管理:

创建数据库资产与用户

资产管理-资产列表-数据库:
image.png
创建数据库资产,mysql为例(资源IP10.0.4.39):
image.png
添加资源,添加用户,提交:
image.png

测试数据库连接

点击更多-测试。可以看到jumpserver与数据库正常连接:
image.png
资产授权这里你也可能会有跟我一样的疑惑:
特意尝试了一下不添加资产but选定defult节点:
image.png
但是其实也是可以访问的,左侧边栏-工作台-web终端:
image.png

web-cli or navicat操作数据库:

通过web-cli操作数据库:
image.png
mysql的后台针对的是web-cli还是。当然了navicat可以生成一个5分钟的临时用户!
image.png
随便用navicat登陆临时账户,操作几条命令看看:
img_v2_6c262d19-72c3-4767-bf1c-d988b5e7aaag.jpg
当然了一直连着还好,断开超时后,就无法登陆了!

会话审计

控制台左侧边栏-审计台
image.png
会话审计-会话记录and命令记录:
image.png
命令可以追溯:
image.png
当然了 如果能有web版的navicat这样的页面就更好了!能追溯到命令与操作人不用去每次给用户开安全组添加信任IP,这样我已经很知足了…唯一不满的是命令记录不能按照资产进行分类

云服务的添加管理:

参照:https://baijiahao.baidu.com/s?id=1752070936393562982&wfr=spider&for=pc

确定集群连接url

根据集群config文件 获取连接url:
image.png

K8S集群管理权限的SA,并且绑定cluster-admin角色

参照: https://www.i7ti.cn/1410.html
cat jumpserver-admin.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jumpserver-admin
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jumpserver-admin
subjects:
  - kind: ServiceAccount
    name: jumpserver-admin
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin    #此处绑定集群管理员权限,请根据自身需求绑定权限,这里只是举个例子
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f jumpserver-admin.yaml

image.png

获取token令牌:

kubectl get secret -n kube-system |grep "jumpserver-admin"
kubectl describe secret jumpserver-admin-token-zb8vm -n kube-system

image.png
注:以上操作在kubernetes控制台节点操作!

创建云服务资产

jumpserver控制台操作
资产管理-资产列表-云服务-新建-选择平台-kubernetes
image.png
输入自定义名称 URL 节点等配置
image.png
添加账号,输入上一步获取的token,提交:
image.png
这里是没有测试的提交资源后:
image.png

资产授权:

image.png
输入相关配置,提交:
image.png

web cli终端测试连接:

切换控制台到工作台:
image.png
web终端:
image.png
连接名为develop的kubernetes集群:
image.png
随便选择一个clusternet-system namespace下pod 连接一下:
image.png

普通用户的测试:

注:以kubernetes云服务为例!

创建普通用户

上面的步骤都是超级用户admin操作的,现在创建一个普通用户:
控制台-用户管理-用户列表-创建用户:
image.png
普通用户-zhangpeng创建-提交
image.png
创建用户组develop,将zhangpeng用户加入用户组:
image.png
注意:将zhangpeng用户在default用户组中剔除(前面好多授权针对的是用户组,创建新的组方便区分)

kubernetes相关资源创建:

网上所有的文章基本都是错的,关于普通用户的,比如:JumpServer:提升Kubernetes集群管理安全。但是普通用户的方式是不完整的。下面操作一下,请参照:k8s结合jumpserver做kubectl权限控制 用户在多个namespaces的访问权限 rbac权限控制 !

  1. 创建serviceaccount
kubectl create sa develop-zhangpeng -n develop-xxx
kubectl get sa -n develop-xxxx
kubectl describe secrets/develop-zhangpeng-token-cddqx  -n develop-xxxx

image.png

  1. 创建集群级别资源权限并绑定serviceaccount

网上很多的文章都是只绑定了namespace级别的资源,but jumpserver不能直接到namespace级别。故需要绑定一下集群级别的资源权限:
cat jumpserver-admin-get-auth.yaml

 其实这里就是设置对k8s集群的一些权限的

apiVersion: rbac.authorization.k8s.io/v1    # api
kind: ClusterRole                           # 资源类型
metadata:                                   # 元数据 ClusterRole 不受ns的限制,所以不用写ns
  name: jumpserver-admin-get-auth              # ClusterRole 的名称,能区分就行
rules:
- apiGroups:                                # apiGroups 就是api资源组,你kubectl get apiservice 就可以看到集群所有的api组
  - ""                   # 我这里代表为空,就是api组里面有一个v1.   这样的
  resources:             # 就是k8s资源的名称。kubectl api-resources 这个命令可以查看到,第一列是资源名称,就是可以写在这里的。
                         # 第二列是简写,kubectl get 后面的可以简写。
                         # 第三列是APIGROUP组
                         # 第四列是是否属于NAMESPACED资源,就是你可以在ns下面看到的资源
                         # 第五列是kind的时候写的名称
                         # 资源还分子资源,后期会写一篇专门的文章介绍
  - namespaces/status    # 这个是ns状态
  - namespaces           # 这个是ns
  - persistentvolumes    # pv
  verbs:                 # verbs是定义动作的
  - get                  # 就是可以查看ns的权限
  - list
  - watch
- apiGroups:
  - ""
  resources:             # 这里定义的是可以查看node的权限,更新node的权限。
  - nodes
  - nodes/status
  verbs:
  - get
  - list
  - watch
  - patch
  - update
- apiGroups:
  - "storage.k8s.io"
  resources:               # 这里定义的是可以查看sc的权限,因为我们有后端的存储集群,他们可以对sc的所有权限
  - storageclasses
  - storageclasses/status
  resourceNames:           # 因为sc属于集群资源,不同的业务方需要对自己的sc才有 全部权限。
  - axersc                 # 所有这里可以指定对哪一个sc有全部权限
  verbs:
  - create
  - delete
  - deletecollection
  - get
  - list
  - patch
  - update
  - watch

创建clusterrole apply yaml文件:

kubectl apply -f jumpserver-admin-get-auth.yaml

把上面定义的集群权限ClusterRole绑定给sa develop-zhangpeng:
cat jumpserver-admin-get-auth-clusterrolebinding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding                   # ClusterRoleBinding 用于绑定集群权限的
metadata:
  name: jumpserver-admin-get-auth          # 名称  ClusterRoleBinding 不受ns的限制,所以没有ns
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole                        # 上面定义的ClusterRole名称
  name: jumpserver-admin-get-auth
subjects:
- kind: ServiceAccount                     # 上面定义的sa名称
  name: develop-zhangpeng
  namespace: develop-xxxx
kubectl apply -f jumpserver-admin-get-auth-clusterrolebinding.yaml
  1. namespace资源的绑定

cat jumpserver-admin-auth.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: jumpserver-admin-auth
rules:
- apiGroups:
  - ""
  resources:            # 对pod的一些权限。
  - pods/attach
  - pods/exec           # exec pod
  - pods/portforward    # 设置pod的转发
  - pods/proxy
  - secrets             # secrets的权限
  - services/proxy
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - serviceaccounts     # sa的权限
  verbs:
  - impersonate
- apiGroups:
  - ""
  resources:
  - pods
  - pods/attach
  - pods/exec
  - pods/portforward
  - pods/proxy
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - ""
  resources:
  - configmaps
  - endpoints
  - persistentvolumeclaims
  - replicationcontrollers
  - replicationcontrollers/scale
  - secrets
  - serviceaccounts
  - services
  - services/proxy
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - daemonsets
  - deployments
  - deployments/rollback
  - deployments/scale
  - replicasets
  - replicasets/scale
  - statefulsets
  - statefulsets/scale
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - batch
  resources:
  - cronjobs
  - jobs
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - deployments/rollback
  - deployments/scale
  - ingresses
  - networkpolicies
  - replicasets
  - replicasets/scale
  - replicationcontrollers/scale
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - networking.k8s.io
  resources:
  - ingresses
  - networkpolicies
  verbs:
  - create
  - delete
  - deletecollection
  - patch
  - update
- apiGroups:
  - metrics.k8s.io
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  - endpoints
  - persistentvolumeclaims
  - pods
  - replicationcontrollers
  - replicationcontrollers/scale
  - serviceaccounts
  - services
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - bindings
  - events
  - limitranges
  - pods/log
  - pods/status
  - replicationcontrollers/status
  - resourcequotas
  - resourcequotas/status
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - controllerrevisions
  - daemonsets
  - deployments
  - deployments/scale
  - replicasets
  - replicasets/scale
  - statefulsets
  - statefulsets/scale
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - batch
  resources:
  - cronjobs
  - jobs
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - deployments/scale
  - ingresses
  - networkpolicies
  - replicasets
  - replicasets/scale
  - replicationcontrollers/scale
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - networking.k8s.io
  resources:
  - ingresses
  - networkpolicies
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - authorization.k8s.io
  resources:
  - localsubjectaccessreviews
  verbs:
  - create
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - rolebindings
  - roles
  verbs:
  - create
  - delete
  - deletecollection
  - get
  - list
  - patch
  - update
  - watch
kubectl apply -f jumpserver-admin-auth.yaml

rolebingding 绑定sa:
cat jumpserver-admin-auth-rolebinding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: jumpserver-admin-auth
  namespace: develop-xxxx
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jumpserver-admin-auth
subjects:
- kind: ServiceAccount
  name: develop-zhangpeng
  namespace: develop-xxxxx

kubectl apply -f jumpserver-admin-auth-rolebinding.yaml

创建普通账号

账户管理-账号列表-添加账号develop-zhangpeng。密码方式令牌方式,复制kubernetes集群中刚创建的develop-zhangpeng的token!

image.png

资产授权:

权限管理-资产授权-创建资产授权规则:
image.png
注意授权这里的用户组!

登陆普通用户测试:

开了一个火狐浏览器登陆了普通用户zhangpeng(看设置的密码策略,可能第一次要修改密码!这里就直接忽略了)
image.png
切换到工作台:
image.png

点击web终端:image.png
出现资源列表default资源树:
image.png
可以点击一下其他资产,默认是没有账户,无权限的:
image.png
点击develop kubernetes资源,点击连接:
image.png
进入集群验证一下权限:
image.png
点击clusternet-system namespace or其他命名空间默认应该都是无权限的!只能打开develop-xxxx空间下的pod的shell:
image.png
这里和普通的namespace的授权是不一样的。一般的创建了用户权限绑定namespace就好了。但是在jumpserver这里一定要记得集群的权限!文章来源地址https://www.toymoban.com/news/detail-480764.html

强调的:

  1. 用户 用户组的创建区分
  2. 账户模板的使用
  3. kubernetes普通用户的授权
  4. 资产后面进行更详细的划分
  5. 其他的:ldap集成,存储使用对象存储。至于邮件的修改就忽略了。远程应用都是企业版的功能也忽略了
  6. kubernetes的纳管有点意犹未尽:是纳管了,可是用户还需要实时看日志阿?我觉得我还是不会用jumpserver纳管kubernetes…

到了这里,关于jumpserver的简单安装使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux下Samba服务器的安装与配置(简单实用)

    为了可以实现Linux与windows之间实现文件的共享,方便文件可以直接修改,而不是像以前需要拷贝文件再进行修改,samba的诞生是为了实现现在的这些需求。我们知道Linux之间可以使用NFS服务器来实现文件的共享,samba的诞生就是为了使windows能够访问Linux的资源。 下面是samba服务

    2024年02月12日
    浏览(49)
  • 使用阿里云服务器搭建网站简单吗?超简单教程

    使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程: 首先你需要注册一个阿里云账号,

    2024年03月10日
    浏览(74)
  • 使用node简单搭建websocket服务器

    我们都知道,http协议通信只能由客户端发起,然后服务端再做出响应;但是websocket协议最大的特点是服务端可以主动向客户端推送消息,客户端也可以主动向服务器发送消息 往常实现双向通信的方法主要是 轮询, 客户端通过定时器,每隔一段时间就会主动发送请求给服务器

    2024年02月05日
    浏览(59)
  • Unity使用webSocket与服务器通信(二)——C#服务器端使用Fleck时的简单服用方法

    C#服务端用到Fleck包,它包含哪些可用的回调函数,有哪些常用的api方法? 演示:服务端收到Unity用户发来的信息 Fleck提供的回调函数有下面几种: 其它常用的api主要有: ping pong的作用是啥? WebSocket为了保持客户端、服务端的实时双向通信,需要确保客户端、服务端之间的

    2024年02月08日
    浏览(46)
  • 使用Go语言编写简单的HTTP服务器

    在Go语言中,我们可以使用标准库中的\\\"net/http\\\"包来编写HTTP服务器。下面是一个简单的示例,展示了如何使用Go编写一个基本的HTTP服务器。 go 复制代码 package  main import  ( \\\"fmt\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个处理器函数,处理所有对根路径的请求 handler := func (w http.

    2024年01月24日
    浏览(51)
  • 使用nginx简单搭建一个ChatGPT代理服务器

    作者:ChenZhen 本人不常看CSDN消息,有问题通过下面的方式联系: 邮箱:1583296383@qq.com vx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。📝 如果对你有帮助,请给一个小小的sta

    2024年02月06日
    浏览(76)
  • 教你如何使用云服务器搭建我的世界Minecraft服务器(超级简单-10分钟完成)

    一个人玩游戏没啥意思,和朋友一块联机呢,距离太远,家庭局域网宽带又没有公网ip,你的朋友没办法与你联机,然而你只需要一台服务器即可搞定了;但是很多用户没没接触过相关的内容,具体的该怎么操作呢?下面我将吧详细的教程分享给大家,适合完全零基础,跟着

    2024年02月07日
    浏览(54)
  • 使用IO完成端口实现简单回显服务器

    使用IO完成端口实现简单回显服务器,因为是测试用的,所以代码很粗糙。 提醒 使用的是ReadFile、WriteFile来实现Overlapped IO,正式场合应该用WSARecv、WSASend,原因:来自《Windows网络编程技术》 8.2.5节 在这里插入图片描述 技术点记录下 io以同步方式立马完成时,系统也会将此通知

    2024年02月06日
    浏览(37)
  • Windows系统中Apache Http服务器简单使用

    1 简介         Apache HTTP服务器是一个开源的、跨平台的Web服务器软件。它由Apache软件基金会开发和维护。Apache HTTP服务器可以在多种操作系统上运行,如Windows、Linux、Unix等,并且支持多种编程语言和技术,如PHP、Perl、Python、Java等。     Apache HTTP服务器提供了高度可定制

    2024年02月10日
    浏览(45)
  • 6. Python使用Asyncio开发TCP服务器简单案例

    1. 说明 在Python中开发TCP/IP服务器有两种方式,一种使用Socket,需要在py文件中引入对应的socket包,这种方式只能执行单项任务;另一种方式使用Asyncio异步编程,可以一次创建多个服务器执行不同的任务。 2. 接口说明 3. 简单案例 创建一个tcp服务器,并实现数据的接受和发送

    2024年03月11日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包