Tunnelblick身份验证自动通过Google Authenticator Token(谷歌验证器验证码)

文档地址

Using Scripts - Tunnelblick | Free open source OpenVPN VPN client server software GUI for Mac OS X.

https://tunnelblick.net/cMultiFactorAuthentication.html

原理大概就是:Tunnelblick开启了Google Authenticator Token(谷歌验证器验证码)MFA验证,可以通过配置了static-challenge-response.user.sh,自动从脚本里获取stdout来输入到Google Authenticator Token(谷歌验证器验证码)

提取绑定二维码获取以下信息,然后提取secret

1
otpauth://totp/xxxxx:xxxxx?secret=<secret>&issuer=<issuer>

把secret存储到钥匙串访问(Keychain)

  • 命令行添加
1
/usr/bin/security add-generic-password -s "Tunnelblick-Auth-****" -a "otp-secret"  -w "add-your-otp-secret-here"
  • 设置-钥匙串访问-添加

image-20240701192824848

安装oath-toolkit

OATH Toolkit提供了构建一次性密码身份验证系统的组件。支持的技术包括基于事件的HOTP算法(RFC 4226)、基于时间的TOTP算法(RFC 6238)和可移植对称密钥容器(PSKC, RFC 6030),用于管理密钥数据

1
brew install oath-toolkit

在 ~/Library/Application Support/Tunnelblick/Shared/<********>.tblk/Contents/Resources目录下创建static-challenge-response.user.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash -e
otp_pw_name="Tunnelblick-Auth-<****>"
otp_pw_account="otp-secret"

# Get otp-secret from keychain:
if ! otp_secret=$(/usr/bin/security find-generic-password -w -s "$otp_pw_name" -a "$otp_pw_account"); then
exit 1
fi

# Generate otp code
otp_code=$(/opt/homebrew/Cellar/oath-toolkit/2.6.11/bin/oathtool --totp -b "$otp_secret")

# Output the otp_code without a trailing newline
printf "%s" "$otp_code"

然后就可以了自动输入谷歌验证码连接了


Tunnelblick身份验证自动通过Google Authenticator Token(谷歌验证器验证码)
https://cason.work/2024/07/01/Tunnelblick身份验证自动通过Google-Authenticator-Token-谷歌验证器验证码/
作者
Cason Mo
发布于
2024年7月1日
许可协议