搞了2,3个小时记录一下吧。
本博客实现

  1. ssh 自动登录(包括自动输入 IP, 密码和谷歌验证码)
  2. (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

主要遇到的问题

  1. 验证码可能有固定的时间偏差需要自己调
  2. 验证码那里网上一般是 py2,py3的话会有一些问题

跳板机+谷歌验证码 ssh 自动登录相关推荐

  1. linux ssh 脚本 密码,ssh自动登录的4种实现方法

    1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A上运 ...

  2. linux sshd自动登录,SSH自动登录的几种方法

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A ...

  3. GateOne配置API认证、SSH自动登录、用户免密登录及Web应用嵌入

    GateOne的安装与远程连接SSH在上一篇博客中已经有详细过程,传送门:全新CentOS7上GateOne的安装. 今天记录的是GateOne在Web应用中逐步添加API认证.取消掉用户登录需要输入 ...

  4. Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享

    文件名:ssh_auto_login #!/usr/bin/expect ## # ssh模拟登陆器 # # @author zhiyuan ## if {$argc<4} { puts &qu ...

  5. Linux中的Shell用SSH自动登录远程服务器后执行命令并自动退出

    目录 [隐藏] 1 SSH命令格式 2 主要参数说明 3 ssh控制远程主机,远程执行命令步骤 4 准备工作 5 基于公私钥认证远程登录可能存在的不足 6 ssh 执行远程命令格式 6.1 打开远程s ...

  6. linux登录ssh怎么保存采集的脚本,ssh自动登录并且su的脚本

    从一台Linux机器上用u1用户自动登录到服务器, 然后su成u2 - 需要安装expect - 脚本如下: #!/usr/bin/expect #auto ssh login set timeout ...

  7. Linux usbkey自动登陆,使用public/private key让putty(ssh)自动登录(以及linux上使用密钥做ssh自动登陆)...

    方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空 ...

  8. Openwrt配置ssh自动登录服务器socks5转发

    http://blog.onovps.com/archives/openwrt-ssh-socks5.html 本文目的实现Openwrt自动ssh数据转发,内部局域网用户可随时通过此ssh实现代** ...

  9. linux脚本expect自动登录,SHELL脚本:利用expect完成SSH自动登录

    有个业务需求,需要在服务器上安装一个Agent,安装Agent其实很简单,但是顶不住服务器数量太多,所以不可能一台台的登上去安装,所以写了个脚本可以实现批量自动化安装 1.脚本实现的功能 根据提供的I ...

  10. mysql跳板机_python实现ssh通过跳板机连接mysql

    # -*- coding: utf-8 -*- import MySQLdb import os,sys from sshtunnel import SSHTunnelForwarder def my ...

最新文章

  1. 常用的前端辅助开发工具有哪些
  2. 延长线段ab到c的画法有几种_终于有人把趋势线的正确画法和错误画法讲透彻了,字字精华,原来大多数人都画错了...
  3. 【JavaSE02】Java基本语法-概念
  4. 2019.03.02
  5. jqplot学习笔记
  6. HDU 2546(01背包)
  7. 分布式环境下,怎么保证线程安全
  8. Linux下从零开始部署和使用Jaeger
  9. android activity透明主题,Android应用的全透明效果--Activity及Dialog的全透明
  10. 树模型——机器学习面试
  11. 阿里云物联网平台物模型SDK试用
  12. 【190111】VC+Access工程信息管理系统源代码
  13. 读计算机网络得学五笔吗,电脑五笔打字难不难学?大约要学多久才可以掌握?
  14. Craps赌博游戏-python3
  15. Ubuntu16.04 安装LSD-SLAM
  16. 合肥高中计算机课程表,合肥普通高中新课程各科目必修学分统计表
  17. 百度网盘电脑登录二维码加载不出来解决方法
  18. 爬虫进阶之路---处理点触验证码(使用超级鹰API接口处理;以解决12306的图片验证码为例;)
  19. 2019年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
  20. 远光九天云平台 自主创新助力科技自强

热门文章

  1. 15、工作流Web流程设计器及表单设计器
  2. 计算机毕业设计JAVA房屋租赁系统mybatis
  3. java开发和android开发_浅谈Java开发和Android开发的不同
  4. 论文写作课程体会和总结
  5. CTFShow“萌心区“WP题解
  6. java抽奖代码_纯java代码实现抽奖系统
  7. OpenGL超级宝典(第7版)笔记18 位移、旋转、缩放、观察、透视矩阵 代码实现
  8. delphi2010 窗体使用技能总结
  9. java基于JSP+Servlet的员工绩效考核系统
  10. java实现PDF转word,使用jacob插件