介紹如何在 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