当前位置: 首页 > news >正文

自动登录脚本神器-Mac电脑实现自动登录堡垒机并自动输入账号密码跳转不同机器环境

先讲下背景:

公司电脑需要先登录堡垒机,然后再从堡垒机跳转到具体生产机器,每次输入堡垒机都要通过Authenticator里的2FC的码做验证,然后再跳到堡垒机还要再输入一次账号密码,为了方便快速登录机器,可以制作个脚本实现一键登录,全程只需做两个操作(1、按F1查找全部机器,2、输入对应数字选择机器,然后脚本会自动登录堡垒机,自动输入2FC,自动跳转到对应的ip生产机器并填充账号密码!)

1、安装oath-toolkit , 可以实现动态提取 MFA 码

没有brew组件的可以参考Mac安装brew的四种方法(指定能行)_mac brew-CSDN博客

brew install oath-toolkit

2、下载Google Authenticator的SECKEY的提取工具

下载git开源项目,也可以直接把下面附件解压到自己目录

cd ~
git clone https://github.com/scito/extract_otp_secret_keys.git --depth=1 

extract_otp_secret_keys-master.zip

3、安装python提取工具所需环境及组件

本机没有安装python和pip命令的先去安装(参考我之前的文章:创作中心-CSDN)

Mac默认安装python2.7版本,建议安装python3和pip3,我安装的是python3.10.5

cd extract_otp_secret_keys
python -m venv venv
. venv/bin/activatepip install -r requirements-buildenv.txt
pip install -r requirements.txt

4、【重点】 提取 MFA secret key

打开Authenticator APP应用,点击导出账号

微信扫描该二维码活动链接内容

新建a.txt并将该一串文本拷贝到a.txt文件内,执行python解析脚本获取Secret

python3.10 extract_otp_secret_keys.py -p a.txt

快速拷贝验证码小技巧

vim ~/.bash_profile

# xxxxx替换为上面截图的值
alias smCode="echo `oathtool --totp -b xxxxx `| pbcopy"

更新配置文件

source ~/.bash_profile

执行执行smCode命令便可把验证码拷贝到剪切板,后面直接ctrl+v便可复制

5、将上一步得到的Secret带入expect脚本内,执行自动登录

编辑exp脚本:vim loginJms.exp

#!/usr/bin/expect
# 设置应用的登录密码,xxxxxxxx替换为自己的机器
set password "xxxxxxxx"
# xxxxx替换为自己堡垒机账号
spawn ssh -p 2222 xxxxx@jms.leshuatrade.com
# xxxxx替换为自己堡垒机密码
expect "*password*" {send "xxxxx\r"}
expect "*Code]:*" {
# 执行oathtool命令,根据第4步拿到的Secret生成MFA密码,xxxxxxxxxxx替换为第4步的Secret值
set code [exec oathtool --totp -b xxxxxxxxxxx]
send "$code\r"}
# ip替换为你要登录的密码
expect "*Opt>*" {send "10.91.31.116\r"}
expect "*D*" {send "2\r"}
expect "*username:*" {send "webapp\r"}
expect "*password:*" {send "$password\r"}
exec sleep 1# expect脚本执行完成,继续停留在目标服务器内操作
interact

完成后可以通过expect loginJms.exp直接执行,也可以通过shell脚本触发

6、写个shell脚本,方便快速执行expect文件

vim login.sh

#!/bin/bashclear
RED='\033[0;31m'
GRN='\033[0;32m'
BLU='\033[0;34m'
NC='\033[0m'
# 获取执行login.exp路径
pwdpath=$(cd "$(dirname "$0")";pwd)
# ssh登录脚本指令, 注意这里要跟脚本命名要一致
sshJms="expect $pwdpath/loginJms.exp"
# menu.sh# 服务器提示目录,可以根据自己需求修改
echo "--------------------------------------"
echo "选择你要登录的服务器"
echo -e "${GRN}===========测试环境===============${NC}"
echo "【1】127.0.0.1"
echo -e "(1) ${GRN}===========预发布环境===============${NC}"
echo "【11】127.0.0.1"
echo -e "(1) ${RED}===========线上环境===============${NC}"
echo "【21】127.0.0.1"
echo "--------------------------------------"
read -p "请选择服务器:" inputcase ${input} in1)echo -e "${RED}登录服务器:127.0.0.1"# 执行expect脚本$sshJms# 命令执行结束;;2)# echo -e "${RED}登录服务器:"# $ssh-webappsleep 1;;3)exit;;
esac

7、设置shell脚本执行快捷键

vim ~/.bash_profile
# 添加jms为快捷登录命令
alias jms='sh ~/sshlogin/sshlogin.sh'

也可以设置F1快速执行shell脚本(本人就这样设置的),进到终端偏好设置,设置F1为执行shell脚本命令

可以了,已全部完成,后面想登录堡垒机只需要按F1便能快速执行

相关文章:

  • GitHub Actions与AWS OIDC实现安全的ECR/ECS自动化部署
  • 用 pnpm + TurboRepo,构建多项目高效开发体系
  • 参考nlohmann json设计Cereal宏 一行声明序列化函数
  • git add 报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 42
  • 【iOS初体验】Hello, UIKit! - 第一个iOS App保姆式教程
  • iOS App 上架常见问题解决方案:六大难点与实战工具分工详解
  • CatBoost:征服类别型特征的梯度提升王者
  • 数据驱动AI研发的质量与效能策略
  • CVE-2015-5531源码分析与漏洞复现(Elasticsearch目录遍历漏洞)
  • Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】
  • LeetCode 349题解 | 两个数组的交集
  • 洛谷P5021 [NOIP 2018 提高组] 赛道修建
  • kubesphere中搭建DevOps创建流水线
  • 关于SAP产品名称变更通知 SAP云认证实施商工博科技
  • 常用命令总结
  • 安全运营中的漏洞管理和相关KPI
  • HarmonyOS NEXT仓颉开发语言实现画板案例
  • HarmonyOS NEXT仓颉开发语言实战案例:简约音乐播放页
  • IPv4网络地址分类
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)