shell开源跳板机sshstack
笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流
源码地址: https://github.com/sshstack/sshstack
为什么要写shell跳板机?
跳板机的作用目前主要为解决公司开发人员查看日志的需求。而商业跳板机动辄几十万不是我等屌丝公司能消受得起的,开源的跳板机也有几款,如jumpserver,GateOne,麒麟堡垒机等。
但这些真的是拿来就能用的吗?
根据生产实践,这些跳板机存在查看日志卡死、web界面无响应、报错提示不直观等问题,对于中小公司来说体型过大,安装卸载都是大工程(简直不能忍了)。
二次开发可能是个较好的选择,但不是每个运维都会python,而且对于100台以下规模服务器来说,价值也不大。
所以shell跳板机就有了,它非常轻量级,无需数据库,基于ssh协议和linux基本命令,运行流畅,使用简单。对运维来说具有亲和力,易于个性化修改和定制,有了它可轻松管理100台左右的服务器。实在是运维同学居家旅行必备良药啊!
有哪些功能?
- 1.一键登陆(已实现)
- 2.用户管理(完善中)
- 3.主机授权(完善中)
- 4.批量授权(实现中)
- 5.资产管理(实现中)
- 6.日志审计(规划中)
- 7.用户查询(规划中)
如何使用?
一、先决条件
- 管理机对所有被管理机做ssh密钥认证
- 管理机安装ansible
- 适用系统为CentOS 7
- 所有主机在hosts文件做主机名与IP地址解析
二、目录说明
[root@oldboy sshstack]# tree
.
├── bin # 可执行文件
│ ├── deluser.sh # 删除用户脚本
│ ├── localadd.sh # 注册用户脚本
│ ├── remoteadd.sh # 给用户授权主机脚本
│ └── sshstack.sh # 用户登陆后执行的shell
├── conf # 配置文件
│ ├── hosts # 配置已有的资产
│ └── sshstack.conf # 配置文件
├── data # 创建用户信息与主机授权信息存放目录
│ └── oldboy.info
├── func # 函数库
│ └── funcs
└── README.md
4 directories, 9 files
三、最佳实践
1.安装
拉取代码到任意目录即完成安装,需要注意目录权限为755,以下存放在/opt目录下
cd /opt
git clone https://github.com/sshstack/sshstack.git
2.添加资产
将被管理主机填入/opt/sshstack/conf/hosts即可,这里我们有三台oldboy的主机。
[root@oldboy conf]# cat /opt/sshstack/conf/hosts
[IP地址] [主机名] [备注]
10.0.0.21 oldboy-web01 老男孩教育官网接口
10.0.0.22 oldboy-web02 老男孩教育官网h5页面
10.0.0.23 oldboy-web03 老男孩教育官网后台
3.创建本地用户oldboy
执行脚本,输入oldboy
[root@oldboy sshstack]# /opt/sshstack/bin/localadd.sh
输入用户> oldboy
INFO: 创建用户
SUCCESS.
INFO: 生成随机密码
SUCCESS.
INFO: 写入文件/opt/sshstack/data/oldboy.info
用户创建好后,用户信息保存在/opt/sshstack/data/wanggang.info文件
4.授权主机
这里将授权oldboy用户可以登陆oldboy-web01、oldboy-web02、oldboy-web03这三台主机
[root@oldboy sshstack]# /opt/sshstack/bin/remoteadd.sh
输入用户> oldboy
授权主机> 10.0.0.21
INFO: 生成本地密钥
SUCCESS.
INFO: 创建远端用户
SUCCESS.
INFO: 发送公钥到远程主机
SUCCESS.
INFO: 修改权限
SUCCESS.
[root@oldboy sshstack]# /opt/sshstack/bin/remoteadd.sh
输入用户> oldboy
授权主机> 10.0.0.22
INFO: 生成本地密钥
SUCCESS.
INFO: 创建远端用户
SUCCESS.
INFO: 发送公钥到远程主机
SUCCESS.
INFO: 修改权限
SUCCESS.
[root@oldboy sshstack]# /opt/sshstack/bin/remoteadd.sh
输入用户> oldboy
授权主机> 10.0.0.23
INFO: 生成本地密钥
SUCCESS.
INFO: 创建远端用户
SUCCESS.
INFO: 发送公钥到远程主机
SUCCESS.
INFO: 修改权限
SUCCESS.
授权主机后,信息同样保存在/opt/sshstack/data/oldboy.info文件
5.查看用户信息
刚创建的用户信息保存在data目录下
[root@oldboy data]# cat /opt/sshstack/data/oldboy.info
2018-02-02:14:46:24 用户名 oldboy 密码 2fe579e7
10.0.0.21 oldboy-web01 老男孩教育官网接口
10.0.0.22 oldboy-web02 老男孩教育官网h5页面
10.0.0.23 oldboy-web03 老男孩教育官网后台
6.用户登陆
因为oldboy用户在oldboy主机上已经创建,我们只需要在自已电脑执行ssh命令即可连接,我这里以mac为例:
Mac:~ chentiangang$ ssh -p25535 oldboy@oldboy
oldboy@oldboy's password:
Last failed login: Fri Feb 2 10:28:44 CST 2018 from 106.37.109.202 on ssh:notty
There were 2 failed login attempts since the last successful login.
Welcome to Alibaba Cloud Elastic Compute Service !
主机列表:
[IP地址] [主机名] [备注]
10.0.0.21 oldboy-web01 老男孩教育官网接口
10.0.0.22 oldboy-web02 老男孩教育官网h5页面
10.0.0.23 oldboy-web03 老男孩教育官网后台
改密:password
退出:exit
清屏:clear
提示:输入主机名或IP地址连接
oldboy 选择主机 >
用户登陆后即要看到已授权的主机,可以通过输入password修改密码,输入主机名或IP地址即可登陆到对应的授权主机。
shell开源跳板机sshstack的更多相关文章
- 搭建开源跳板机——jumpserver
搭建开源跳板机mobaxterm 官方文档:https://jumpserver.readthedocs.io/zh/master/ $ yum update -y # 防火墙 与 selinux 设 ...
- CentOS7 开源跳板机(堡垒机) Jumpserver
开源跳板机(堡垒机)Jumpserver 环境 CentOS 7 x64 关闭 selinux firewalld jumpserver: 172.24.0.14 testserve ...
- Shell跳板机sshstack
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 源码地址: https://github.com/sshstack/sshstack 为什么要写shell跳板机? ...
- Shell实现跳板机,为什么用跳板机
整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1. 问题 ...
- 项目(五)jumpserver企业开源跳板机搭建
跳板机是什么?跳板机是运维堡垒主机的另个称呼.作为技术或者运维人员应该不会陌生.企业为了服务器的安全,通常所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理. 接下来,我来讲述一下 ...
- 开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)
环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syste ...
- 最新开源跳板机(堡垒机)系统 Jumpserver介绍
Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统. Jumpserver 使用 Python / Django 进行开发,遵 ...
- Docker 搭建开源跳板机_jumpserver (运维开源堡垒机_jumpserver) Centos_7.0
最近看到一个开源项目(jumpserver) 很不错 还是用Docker 部署得 ... 抽了点时间拿来学习一下 部署 分析 简单使用一下 ....好了先搭起来 准备 工作: ...
- jumpserver(0.3.2版本)开源跳板机系统部署
1. 介绍 JumpServer亮点: 集成Ansible,批量执行命令: 支持WebTerminal wiki地址:https://github.com/jumpserver/jumpserver/ ...
随机推荐
- mysql 8.0.12 修改root密码
use mysql: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVI ...
- 浅谈线程runnable和callable的使用及区别
线程使用比较广泛,但实际上一般项目很少用上线程,线程常用于优化复杂的程序执行流程,把一些与业务关系关系不大但是必须要执行的流程使用线程的方式让子线程去执行,主流程只返回跟业务有关的信息 runnabl ...
- python-flask-请求源码流程
启动先执行manage.py 中的 app.run() class Flask(_PackageBoundObject): def run(self, host=None, port=None, ...
- mybatis调用存储过程的两种方式
先总结和说明一下注意点: 1.如果传入的某个参数可能为空,必须指定jdbcType 2.当传入map作为参数时,必须指定JavaType 3.如果做动态查询(参数为表名,sql关键词),可以使用${} ...
- 2017-4-18/缓存、CDN
1. 什么是缓存,为什么要用缓存? 缓存就是数据交换的缓冲区(称作Cache),是存贮数据(使用频繁的数据)的临时地方.当用户查询数据,首先在缓存中寻找,如果找到了则直接执行.如果找不到,则去数据库中 ...
- Git:合并分支冲突问题
首先创建分支feature1,并且修改readme.txt内容,再在该分支上提交. 切换回master分支, 并且修改readme.txt内容,再在master分支上提交. 此时的分支路线如下,合并时 ...
- Async:简洁优雅的异步之道
前言 在异步处理方案中,目前最为简洁优雅的便是 async函数(以下简称A函数).经过必要的分块包装后,A函数能使多个相关的异步操作如同同步操作一样聚合起来,使其相互间的关系更为清晰.过程更为简洁.调 ...
- Test22455
- linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory
一.故障现象 1.用secure CRT连接服务器时显示: /bin/bash:No such file or directory 翻译成中文是:没有此类文件或目录 2.直接登录服务器执行命令时显示: ...
- 小程序swiper效果高宽设置(微信小程序交流群:604788754)
swiper的宽和高一定要设置在swiper上面.swiper-item默认继承swiper的宽和高.swiper-item容器里面的宽和高没有继承他的父节点宽和高,需要从新设置. 不明白之处,可以咨 ...