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的更多相关文章
- shell开源跳板机sshstack
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 源码地址: https://github.com/sshstack/sshstack 为什么要写shell跳板机? ...
- linux跳板机开发之trap信号机应用
场景1:公司新招聘了一个配置管理员,他的工作是负责将公司开发人员写的新代码依次分发到办公室测试环境.IDC测试环境和正式线上环境.因此公司需要开发一个程序,当配置管理员登录服务器,只能进入分发的管理界 ...
- Shell实现跳板机,为什么用跳板机
整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1. 问题 ...
- shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机
1.NGINX启动脚本 #!/bin/bash # chkconfig: 235 32 62 # description: nginx [ -f /etc/init.d/functions ] &am ...
- 运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)
一.系统指标巡检脚本 #!/bin/bash menu(){ cat <<EOF +---------------------------------------------+ | 日常巡 ...
- 用meterpreter实现跳板机
meterpreter跳板机 背景:渗透测试者A拿到了B主机的控制权,但没有拿到ssh密码(不能打ssh隧道).现需横向移动渗透内网主机C,为了避免动作过大不便直接在B上对C进行渗透,其中C不能出 ...
- mysql ssh 跳板机(堡垒机???)连接服务器
跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳 ...
- mac/Linux/centos ssh连接服务器以及跳板机,实现类型Xshell 功能
1. 由于之前一段时间,公司测试服务器需要有跳板机这种操作,由于mac机器上没有类似Xshell这种程序,所以,只能自己造轮子啦. 本程序采用Shell+Expect脚本编写 具体代码请查看:http ...
- 【效率工具】SSH一键登录脚本(可一键从跳板机登录线上服务器)
说明 前阵子上线,一次性上了十个服务,一直上到凌晨才完事,期间每个服务都要先输入跳板机的登录信息来登录跳板机,然后再输入线上服务器的信息来登录线上服务器,实在是太过于麻烦,而且有些服务还有好几台服务器 ...
随机推荐
- 移动端mobiscroll时间插件的调用
话不多说直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 正则表达式中的 \b 什么意思?
以前经常看到类似这样的正则表达式:\bhi\b 不知道什么意思,今天特意去查了下. 原来\b是正则表达式规定的一个特殊代码,也叫元字符,\b代表着单词的开头或结尾,也就是单词的分界处.
- V4l2的结构体 --- ioctl【转】
在应用程序获取视频数据的流程中,都是通过 ioctl 命令与驱动程序进行交互,常见的 ioctl 命令有: VIDIOC_QUERYCAP /* 获取设备支持的操作 */ VIDIOC_G_FMT ...
- 使用jemeter手工编写注册、登陆脚本 运用 fiddler (一)
我们要使用jemeter来手工写一个脚本 我们要使用到两个工具 一个 就是 jmeter 一个就是 fiddler 为什么要使用fiddler ? 因为能够帮我们正确精准的找到我们需要的数据 ...
- Effective Java 第三版——22. 接口仅用来定义类型
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- python socket连接服务器获取回显
军训回来了,皮皮..... import socket import sys try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建一个 ...
- CSS3让长单词与URL地址自动换行——word-wrap属性
div{ word-wrap:break-word; } word-wrap属性可以使用的属性值为normal与break-word两个.使用normal属性值时浏览器默认处理,只在半角空格或者连字符 ...
- CTF---Web入门第十题 Once More
Once More分值:10 来源: iFurySt 难度:易 参与人数:4782人 Get Flag:2123人 答题人数:2166人 解题通过率:98% 啊拉?又是php审计.已经想吐了. hin ...
- Codeforces 842A Kirill And The Game【暴力,水】
A. Kirill And The Game time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码
Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体 ...