CLI에서 Authy와 함께 MFA Token 생성
CLI를 사용하여 TokenOATH Toolkit의 oathttool을 생성하면 이 번거로움을 조금 없앨 수도 있고 스크립트를 통해 자동으로 처리할 수도 있다.
단, oathttool 자체는 매번 시크릿키(SecretKey)가 필요하기 때문에 mfacodegen이라는 wrapper script를 준비해 편리하게 사용할 수 있도록 해야 한다.
이용 인상은 다음과 같다.
Authy Desktop에서 Secret Key 가져오기
MFA에서.
시크릿 키는 MFA 설정 당시 QR 코드 내에서 훈련했지만, 이미 아우티가 설정되면 앱에서 시크릿 키를 볼 수 없게 된다.
그러나 Authy는 정기적으로 Token을 생성하기 위해 내부에 시크릿 키를 유지하고 있다.
Authy Desktop은 JS에서 Token을 생성하기 때문에 디버그 포트가 활성화된 상태에서 프로그램을 시작하고 Developer Tools를 통해 내부를 들여다보면 순조롭게 얻을 수 있습니다.
Mac에서 Terminal을 열고 다음 명령을 사용하여 Authy Desktop을 엽니다.
open -a "Authy Desktop" --args --remote-debugging-port=5858
Windows에서 Authy Desktop의 단축키를 만들고 오른쪽 키-> 속성-> 단축키-> 링크의 마지막 추가--remote-debugging-port=5858
를 누르면 저장됩니다.만들어진 단축키에서 앱을 열어보자.먼저 Authy Chrome Extension을 열고 로그인한 계정 일람 화면에서 마우스 오른쪽 단추를 눌러 Inspect(검증)를 엽니다.
Authy Desktop을 시작하면 Chromehttp://localhost:5858에서 열립니다.
디버그 포트에 정상적으로 연결되면 다음 화면이 표시됩니다.
Twilio Authy를 클릭하면 다음과 같이 Developer Tool을 사용할 수 있습니다.
Developer Tools가 열리면 Console 탭을 열고 다음 코드를 입력한 후 실행합니다.
appManager.getAuthenticatorApps().forEach(app=>console.log(app.name,app.originalName,app.decryptedSeed))
그러면 계정 이름, SecretKey가 Constore로 출력될 것입니다.받은 Secret Key는 암호 관리 애플리케이션과 같이 안전하게 보관하십시오.
oathttool에서 MFA Token 생성 시도
Mac라면 brew를 사용하면 간단하게 설치할 수 있습니다.
brew install oath-toolkit
다음 명령을 통해token을 생성할 수 있는지 확인하십시오.stty -echo; echo -n 'Enter SecretKey: '; read skey; echo; stty echo; oathtool -b --totp $skey
oathtool -b --totp [SecretKey]
만 확인할 수 있지만, 그 상황은 셸의hitory에 시크릿 키를 남기고 나중에.bash_히스토리야.zsh_history에서 제거해야 합니다.wrapper script(mfacodegen) 만들기
이렇게 되면 시크릿 키의 처리가 까다로워 사용하기 힘들다
를 참고하십시오.
암호화된 SecretKey 목록 파일 만들기
적당한 위치에서 한 줄
[ServiceID]\t[SecretKey]
의 목록을 생성합니다.ServiceID를 CLI 옵션으로 설정하여 나무랄 데 없는 문자열로 설정하십시오.
S/MIME의 개인 키와 인증서를 생성합니다.
openssl req -x509 -days 3650 -newkey rsa:2048 -keyout /path/to/mfa.key -out /path/to/mfa.crt -subj '/'
생성된 인증서를 사용하고openssl 명령encrypt를 사용합니다.openssl smime -encrypt -aes256 -in /path/to/mfalist.txt -out /path/to/mfalist.dat -binary -outform PEM /path/to/mfa.crt
혹시 모르니까 가능한지 먼저 확인해 봐.다음 명령이 표준 출력에 decrypt 결과를 표시하면 성공합니다.
openssl smime -decrypt -in /path/to/mfalist.dat -inkey /path/to/mfa.key -binary -inform PEM
원/path/to/mfalist.txt가 필요하지 않기 때문에 먼저 삭제합니다.mfacodegen 설정
다음 파일을 path를 통과하는 적당한 위치에 설정합니다.
첫 번째
mfalist.txt
와 LIST_PATH
를 적절하게 수정하십시오.또 잊지 마세요
KEY_PATH
.mfacodegen
#!/bin/bash
set -e
LIST_PATH=/path/to/mfalist.dat
KEY_PATH=~/path/to/mfa.key
usage() {
echo "Usage: $0 [-clh] [-s service]" 1>&2
exit 1
}
while getopts cls:h OPT; do
case $OPT in
c) mode='copy'
;;
l) cmd='show'
;;
s) cmd='generate'
service=$OPTARG
;;
h) usage
;;
\?) usage
;;
esac
done
[ -z "$cmd" ] && usage
generateToken() {
list=$(loadList)
seckey=$(echo "${list}" | awk "\$1==\"${service}\"{print \$2}")
[ -z "$seckey" ] && { echo "Service ${service} not found." >&2; exit 1; }
if [ "$(uname)" = 'Darwin' -a "$mode" = 'copy' ]; then
echo -n $(oathtool -b --totp $seckey) | pbcopy
else
oathtool -b --totp $seckey
fi
}
loadList() {
if [ -p /dev/stdin ]; then
stdin=$(cat -)
openssl smime -decrypt -inkey $KEY_PATH -in $LIST_PATH -binary -inform PEM -passin "pass:$stdin"
else
openssl smime -decrypt -inkey $KEY_PATH -in $LIST_PATH -binary -inform PEM
fi
}
showServiceList() {
list=$(loadList)
echo "${list}" | cut -f1 | sort
}
case "$cmd" in
'show' )
showServiceList
;;
'generate' )
generateToken
;;
esac
동작 확인
chmod +x
옵션은 서비스 목록을 표시합니다.mfacodegen -l
-l
옵션은 지정된 서비스 ID의 token을 생성합니다.mfacodegen -s github
Mac의 경우 -s [ServiceID]
에서 토큰을 클립보드에 복사합니다.mfacodegen -c -s github
이렇게 되면 CLI는 MFA token을 획득할 수 있다.
Reference
이 문제에 관하여(CLI에서 Authy와 함께 MFA Token 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u-minor/items/daa6579998da0c534a6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)