网站首页 > 精选文章 正文
先讲下背景:
公司电脑需要先登录堡垒机,然后再从堡垒机跳转到具体生产机器,每次输入堡垒机都要通过Authenticator里的2FC的码做验证,然后再跳到堡垒机还要再输入一次账号密码,为了方便快速登录机器,可以制作个脚本实现一键登录,全程只需做两个操作(1、按F1查找全部机器,2、输入对应数字选择机器,然后脚本会自动登录堡垒机,自动输入2FC,自动跳转到对应的ip生产机器并填充账号密码!)
1、安装oath-toolkit , 可以实现动态提取 MFA 码
没有brew组件的可以参考
https://blog.csdn.net/muyimo/article/details/125211460
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命令的先去安装(参考我之前的文章:
https://mpbeta.csdn.net/mp_blog/creation/editor/148012227)
Mac默认安装python2.7版本,建议安装python3和pip3,我安装的是python3.10.5
cd extract_otp_secret_keys
python -m venv venv
. venv/bin/activate
pip 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/bash
clear
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 "请选择服务器:" input
case ${input} in
1)
echo -e "${RED}登录服务器:127.0.0.1"
# 执行expect脚本
$sshJms
# 命令执行结束
;;
2)
# echo -e "${RED}登录服务器:"
# $ssh-webapp
sleep 1;;
3)
exit;;
esac
7、设置shell脚本执行快捷键
vim ~/.bash_profile
# 添加jms为快捷登录命令
alias jms='sh ~/sshlogin/sshlogin.sh'
也可以设置F1快速执行shell脚本(本人就这样设置的),进到终端偏好设置,设置F1为执行shell脚本命令
可以了,已全部完成,后面想登录堡垒机只需要按F1便能快速执行
猜你喜欢
- 2025-07-09 绝对新惊喜!4款王者级别的办公软件,免费又实用
- 2025-07-09 OpenAI Codex人工智能编程工具推出新功能:可一次生成多个方案
- 2025-07-09 git、github、gitlab有什么区别?(gitlab与github)
- 2025-07-09 三分钟部署AI开发平台!Dify零基础也能玩(含避坑+性能优化)
- 2025-07-09 Git客户端管理工具,免费的SourceTree,克隆、提交、push操作
- 2025-07-09 Mac下 iTerm2 + oh-my-zsh 安装使用
- 2025-07-09 基于Perplexica与内网穿透工具的本地AI搜索服务远程访问实践过程
- 2025-07-09 mac电脑快速搭建DeepSeek集群方法
- 2025-07-09 跨平台开发+AI智能编码效率神器VisualStudio2022下载安装教程
- 2025-07-09 deepseek自己手机本地部署要怎么操作?
- 07-09业内专家详解非法“挖矿”法律问题
- 07-09黑客最新目标:用你的电脑作比特币挖矿机
- 07-09拥有一台云服务器,可以做很多很酷的事情
- 07-09github上fork之后如何与原仓库代码同步
- 07-09Android repo技巧:强制同步远端服务器代码,但不覆盖开发分支
- 07-09代码性能优化之道——无分支编程(无代码编程软件)
- 07-09DeviceNet网络故障及排除方法(devicenet报警代码)
- 07-09告别冗长分支!策略模式让你的代码更优雅
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)