为了增加服务器的安全,运维人员往往会在服务器上添加基于时间添加登录的二次验证登陆(即我们常说的Google Authenticator服务)。
安全是安全,可当我们需要频繁连接数据库、服务器时,麻烦也随之而来。
因为,它会出现在任何地方……
比如跳板机:
比如数据库:
而且让人更糟心的是:
断网后需要重连……
关机后需要重连……
倘使你只操作一个服务器、一个数据库,当然不是什么事——掏出手机、解锁、打开app、输入密码,一气呵成,然后云淡风轻。
可现实总是残酷的,生产环境、测试环境、线上数据库、测试数据库,到处都有连接,而且还得祈祷程序不崩、网络不断,不然又得重头再来,十分不方便。
BUT
前辈们已经做了很多功课,来简化这些操作,我总结下来无非三种:
一、基于浏览器的谷歌验证码插件
输入16位密码验证后,自动在浏览器插件栏同步显示,只需轻轻一点,就能复制,然后粘贴到你需要使用的地方。
二、基于alfred的workflow
提到alfred,不得不说它是一款mac os系统的效率神器。
某大神在上面集成了调用谷歌验证码的脚本,按下“alt+空格键”唤出alfred,输入gauth(快捷键自由配置),点击Enter键即能复制并自动填充到客户端,十分方便。
三、基于python实现自动获取
谷歌验证码的运行机制其实是公开的,只需简单的计算,自己也能成为大神。
代码如下:
# !/usr/bin/python
# -*- coding:utf-8 -*-
'''
注意返回的是str,调用时,若需要int,则需要转换
'''
import hmac, base64, struct, hashlib, time
import platform
def 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])) & 15
h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
return h
def get_totp_token(secret):
return get_hotp_token(secret, intervals_no=int(time.time())//30)
def get_google_code():
"""
:return: googlecode
"""
# 判定系统,这里我因为涉及到本机和个人服务器,所以自己加了一步验证,读取不同的文件路径
is_sys = platform.system()
if is_sys == "Darwin":
# 16位密码,我是保存在本机上的,由程序读取,增加安全性
with open(r"/Users/xxx/Desktop/xxx/python/googlecode.txt", "r") as openfile:
secret = openfile.readline()
elif is_sys == "Linux":
with open(r"/Users/xxx/pubkey/googlecode/googlecode.txt", "r") as openfile:
secret = openfile.readline()
else:
# 自由发挥吧
None
openfile.close()
googlecode = get_hotp_token(secret, intervals_no=int(time.time())//30)
# 这儿需要注意,程序返回的是去0的字符串,比如验证码是005123,程序计算的结果是5123,所以,需要在前面补0,补到六位数
return '%06d' % googlecode
三种实现方式优缺点评比:
浏览器插件
优点:安装简单,多款浏览器可用,多种操作系统可用
缺点:使用固定,无拓展性,操作相对其他两种较麻烦
基于alfred的workflow
优点:操作简单、使用方便
缺点:只适合mac os系统,需要了解alfred
基于python,自动获取的方式
优点:扩展性极强
缺点:需要一定的编程基础
那么,基于python的自动获取的方式,拓展性能达到哪种程度呢?
试想一下这个场景:
某天早上,你计划开始一天的工作,但开始工作前,你需要连接5台服务器、5个数据库,需要输入十次验证码,即便使用alfred,也得连续来十次,并且,谷歌验证码有30秒的时间间隔,你还得等到验证码更新后,才能进行下一步的操作。
而有了基于python自动获取的方式,悄悄告诉你,每天到公司,我只需要轻轻松松的点击一下桌面的app
like this:

剩下的,交给程序吧。我可以趁着间歇,洗洗水杯,泡杯茶,悠闲地开始一天的工作。
想知道更多后续内容,想知道如何解放双手,关注我,不容错过。
如果本文帮助到你,记得点赞点赞~~~
网友评论