跳板机+谷歌验证码 ssh 自动登录
搞了2,3个小时记录一下吧。
本博客实现
- ssh 自动登录(包括自动输入 IP, 密码和谷歌验证码)
- (win os) 复制密码+验证码到剪贴板
文章目录
- 谷歌验证码计算
- 复制到剪贴板
- 为ssh 自动登录做准备
- ssh 自动登录
- 参考资料
- expect 交互输入,执行bash命令
- python计算谷歌验证码
- 主要遇到的问题
谷歌验证码计算
这里用的 python
googleCode_base.py
# -*- coding:utf-8 -*
import hmac, base64, struct, hashlib, time
import platformdef get_hotp_token(secret, intervals_no):key = base64.b32decode(secret, True)msg = struct.pack(">Q", intervals_no)h = hmac.new(key, msg, hashlib.sha1).digest()# 很多网上的代码不可用,就在于这儿,没有chr字符串o = ord(chr(h[19])) & 15h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000return hdef get_totp_token(secret, bias):return get_hotp_token(secret, intervals_no=int(time.time()+bias)//30)def get_google_code():secret="XXXXX" # 这里是谷歌双因子认证:Google Authenticator 的 Secretgooglecode = get_totp_token(secret, 0) # CHJ_WARN 这个参数是试出来的return '%06d' % googlecode
注意上面 CHJ_WARN
这里那个数字需要自己试, 主要可能电脑时间不一致,需要你盯着手机的验证码,然后不断运行程序打印出来自己估计出差的时间。
也可以通过下面的程序试出来
for i in range(-3000, 3000, 30):googlecode = get_totp_token(secret, i) print(googlecode, i)
复制到剪贴板
这个主要是我希望使用openvpn的时候方便输入
googleCode.py
# 把googleCode_base.py的代码拷过来
xxxxxximport win32con
import win32clipboarddef set_text(string):win32clipboard.OpenClipboard()win32clipboard.EmptyClipboard()win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, string)win32clipboard.CloseClipboard()#pyperclip.copy(get_google_code())
set_text( "passward"+get_google_code() )
如果想编译成exe程序锁定到任务栏就
# pip install pyinstaller
pyinstaller -F -w googleCode.py
当然这个是手动复制,也可以通过自动化程序捕捉程序输入框然后自动输入,这里不做了。
为ssh 自动登录做准备
googleCode.py
# 把googleCode_base.py的代码拷过来
xxxxxx
print( get_google_code() )
ssh 自动登录
大致思想是执行python脚本获得其输出
ssh_auto.sh
#!/usr/bin/expect -f
# 登录到服务器之后不这样设置 vim 有问题
trap {set rows [stty rows]set cols [stty columns]stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCHset user xxxxx
set host x.x.x.x
set jump x.x.x.x
set password xxxx
set timeout 30spawn ssh $user@$jump
#expect {# "yes/no" {send "yes\r"}
# "*assword:" {send "$password\r"}
#}expect {"Verification code*" {send_user "\rEnter verification code: "#expect_user -re "(.*)\n"#set veri_code $expect_out(1,string)# 上面那两行是手动输入,下面这个则是依靠自动计算set veri_code [ exec python {googleCode.py} ]send "${veri_code}\n"}
}expect {"yes/no" {send "yes\r"}"*assword:" {send "$password\r"}
}expect {"* Please enter your Login Ip" {send "$host\r"}
}
参考资料
expect 交互输入,执行bash命令
https://www.cnblogs.com/zhengbin/p/8872836.html
https://zhuanlan.zhihu.com/p/64897121
https://zoomadmin.com/HowToInstall/UbuntuPackage/oathtool
https://blog.csdn.net/u013992330/article/details/78035040
python计算谷歌验证码
https://stackoverflow.com/questions/8529265/google-authenticator-implementation-in-python
https://www.jianshu.com/p/be4a460117d5
主要遇到的问题
- 验证码可能有固定的时间偏差需要自己调
- 验证码那里网上一般是 py2,py3的话会有一些问题
跳板机+谷歌验证码 ssh 自动登录相关推荐
- linux ssh 脚本 密码,ssh自动登录的4种实现方法
1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A上运 ...
- linux sshd自动登录,SSH自动登录的几种方法
1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A ...
- GateOne配置API认证、SSH自动登录、用户免密登录及Web应用嵌入
GateOne的安装与远程连接SSH在上一篇博客中已经有详细过程,传送门:全新CentOS7上GateOne的安装. 今天记录的是GateOne在Web应用中逐步添加API认证.取消掉用户登录需要输入 ...
- Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享
文件名:ssh_auto_login #!/usr/bin/expect ## # ssh模拟登陆器 # # @author zhiyuan ## if {$argc<4} { puts &qu ...
- Linux中的Shell用SSH自动登录远程服务器后执行命令并自动退出
目录 [隐藏] 1 SSH命令格式 2 主要参数说明 3 ssh控制远程主机,远程执行命令步骤 4 准备工作 5 基于公私钥认证远程登录可能存在的不足 6 ssh 执行远程命令格式 6.1 打开远程s ...
- linux登录ssh怎么保存采集的脚本,ssh自动登录并且su的脚本
从一台Linux机器上用u1用户自动登录到服务器, 然后su成u2 - 需要安装expect - 脚本如下: #!/usr/bin/expect #auto ssh login set timeout ...
- Linux usbkey自动登陆,使用public/private key让putty(ssh)自动登录(以及linux上使用密钥做ssh自动登陆)...
方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空 ...
- Openwrt配置ssh自动登录服务器socks5转发
http://blog.onovps.com/archives/openwrt-ssh-socks5.html 本文目的实现Openwrt自动ssh数据转发,内部局域网用户可随时通过此ssh实现代** ...
- linux脚本expect自动登录,SHELL脚本:利用expect完成SSH自动登录
有个业务需求,需要在服务器上安装一个Agent,安装Agent其实很简单,但是顶不住服务器数量太多,所以不可能一台台的登上去安装,所以写了个脚本可以实现批量自动化安装 1.脚本实现的功能 根据提供的I ...
- mysql跳板机_python实现ssh通过跳板机连接mysql
# -*- coding: utf-8 -*- import MySQLdb import os,sys from sshtunnel import SSHTunnelForwarder def my ...
最新文章
- 常用的前端辅助开发工具有哪些
- 延长线段ab到c的画法有几种_终于有人把趋势线的正确画法和错误画法讲透彻了,字字精华,原来大多数人都画错了...
- 【JavaSE02】Java基本语法-概念
- 2019.03.02
- jqplot学习笔记
- HDU 2546(01背包)
- 分布式环境下,怎么保证线程安全
- Linux下从零开始部署和使用Jaeger
- android activity透明主题,Android应用的全透明效果--Activity及Dialog的全透明
- 树模型——机器学习面试
- 阿里云物联网平台物模型SDK试用
- 【190111】VC+Access工程信息管理系统源代码
- 读计算机网络得学五笔吗,电脑五笔打字难不难学?大约要学多久才可以掌握?
- Craps赌博游戏-python3
- Ubuntu16.04 安装LSD-SLAM
- 合肥高中计算机课程表,合肥普通高中新课程各科目必修学分统计表
- 百度网盘电脑登录二维码加载不出来解决方法
- 爬虫进阶之路---处理点触验证码(使用超级鹰API接口处理;以解决12306的图片验证码为例;)
- 2019年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
- 远光九天云平台 自主创新助力科技自强
热门文章
- 15、工作流Web流程设计器及表单设计器
- 计算机毕业设计JAVA房屋租赁系统mybatis
- java开发和android开发_浅谈Java开发和Android开发的不同
- 论文写作课程体会和总结
- CTFShow“萌心区“WP题解
- java抽奖代码_纯java代码实现抽奖系统
- OpenGL超级宝典(第7版)笔记18 位移、旋转、缩放、观察、透视矩阵 代码实现
- delphi2010 窗体使用技能总结
- java基于JSP+Servlet的员工绩效考核系统
- java实现PDF转word,使用jacob插件