MFA TOTP 인증 자동화
2025. 1. 17. 21:12ㆍ기타
MFA 인증 중 TOTP 인증은 CLI로 진행할 때 모바일이나 다른 기기를 통해 매번 확인 후 인증을 해야하는 번거로움이 있습니다. mac에서 터미널 환경에서 TOTP 인증을 자동화하는 방법을 정리했습니다.
처리 과정에 대한 간략한 설명
- QR 코드에서 secretKey 추출
- secretKey를 이용해 TOTP 생성
- ssh 연결 시 TOTP 자동 입력 처리
준비물
- QR 코드: TOTP를 발급받기 위한 QR코드
- zbar: 오픈소스 바코드 스캐너 라이브러리입니다.
- QR코드에서 SecretKey를 추출하기 위해서 사용합니다.
- oath-toolkit: HOTP(HMAC-based One-Time Password)와 TOTP(Time-based One-Time Password) 알고리즘을 구현한 도구 모음입니다. 일회용 비밀번호(OTP)를 생성하거나 검증하는 데 사용합니다..
- SecretKey를 이용해 OTP를 생성할 때 사용합니다.
- expect: 스크립트 기반의 자동화 도구. 대화형 명령줄 애플리케이션(SSH, Telnet 등)을 자동화하는 데 사용합니다.
- ssh 접속 시 OTP를 입력하기 위해서 사용합니다.
설치방법
brew install zbar
brew install oath-toolkit
brew install expect
1. QR 코드에서 정보를 추출
- SecretKey를 이용해서 OTP를 생성하기 위함. Authenticator App의 역할을 대신 할 수 있습니다.
- 이미 SecretKey를 가지고 있다면 생략해도 됩니다.
zbarimg 를 사용하여 정보 추출
zbarimg your_qr_code.png
출력된 결과 예시
otpauth://totp/YourService:username?secret=TEST123TEST&issuer=TEST
- parameter의 secret 추출합니다.
2. TOTP 생성
authtool을 사용하여 TOTP 생성
- 추출한 SecretKey(TEST123TEST)를 사용하여 OTP를 생성합니다.
OTP=$(oathtool --totp -b "TEST123TEST")
echo $OTP
출력된 결과 예시
11112222
3. ssh 연결 시 TOTP 자동입력 처리
expect 스크립트 작성
- expect를 이용하여 expect 블록 내에서 SSH 연결을 시도
- "Password:" 프롬프트가 나오면 자동으로 OTP를 입력
- 종료
host=$(host_name)
OTP=$(oathtool --totp -b "TEST123TEST")
expect << EOF
set timeout -1
spawn ssh ra-kr-dev
expect "Password:"
send "$OTP\r"
expect eof
EOF
'기타' 카테고리의 다른 글
XAM: 초대형 엑셀 파일을 위한 터미널 기반 데이터 분석 도구 (0) | 2025.04.09 |
---|---|
DeepSeek(딥시크) 로컬에서 사용하기 (0) | 2025.02.05 |
IDasS(Okta) 생체인식(지문인식) 사용하기 (2) | 2024.12.20 |
Spring JPA vs Django ORM (0) | 2024.04.04 |
Intellij Mybatis Mapper 경고(Warring) 표시 제거 (0) | 2024.03.12 |