免費工具

macOS 安裝 ga-cmd 自動取得 Google Authenticator OTP 一次性驗證碼教學與範例

介紹如何在 macOS 中安裝與使用 ga-cmd 以 shell 指令稿自動取的一次性驗證碼。

首先透過 brew 安裝幾個編譯用的工具:

# 安裝編譯用工具
brew install autoconf automake libtool

下載 ga-cmd 原始碼並進行編譯:

# 下載 ga-cmd 原始碼
git clone https://github.com/arcanericky/ga-cmd.git
cd ga-cmd

# 下載 google-authenticator-libpam 原始碼
git submodule update --init --recursive
cd src/google-authenticator-libpam/

# 編譯 google-authenticator-libpam 
./bootstrap.sh
./configure
make

# 編譯 ga-cmd
cd ..
./build.sh

編譯完成後,將 ga-cmd 這個執行檔複製到適當的位置,例如 $HOME/bin/ 目錄之下。

建立 $HOME/.ga-cmd 設定檔,並填入金鑰,格式為 名稱=金鑰,例如:

myhost=1234567890123456

金鑰設定檔案等同於密碼,所以必須將 $HOME/.ga-cmd 的檔案權限設定為只有自己能讀取:

設定 $HOME/.ga-cmd 權限
chmod 600 $HOME/.ga-cmd

接著即可使用 ga-cmd 自動取得一次性驗證碼了:

使用 ga-cmd 取得一次性驗證碼
ga-cmd myhost

配合 sshpass 自動登入

若有遠端主機在 SSH 登入時需要加上一次性驗證碼,可以用 ga-cmd 配合 sshpass 撰寫自動登入的指令稿。

首先下載 sshpass 的原始碼並進行編譯:

# 編譯 sshpass
tar zxvf sshpass-1.06.tar.gz
./configure
make

將編譯完成後的 sshpass 執行檔也放入 $HOME/bin/ 目錄之下。

最後撰寫自動登入指令稿:

#!/bin/sh
PASSWORD="YOUR_PASSWORD"
OTP=`~/bin/ga-cmd myhost`
SSHPASS="${PASSWORD}${OTP}" sshpass -v -e ssh $* ACCOUNT@MYHOST.COM

將這段指令稿儲存為 autootplogin,同樣放在 $HOME/bin/ 目錄裡面,這樣就可以利用這個指令稿自動登入需要一次性驗證碼的 SSH 主機了,若需要指定一些額外的 ssh 指令參數,則可直接加在其後方,例如建立 SSH 加密通道(tunnel):

# 建立 SSH 加密通道
autootplogin -L 8888:localhost:8888
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago