#!/usr/bin/env python3 """ PAM 인증 스크립트 임시 SSH 비밀번호 검증용 """ import sys import requests import os # VConnect API 서버 주소 API_URL = os.getenv("VCONNECT_API_URL", "http://localhost:8000") def verify_password(username, password): """ 임시 SSH 비밀번호 검증 Args: username: 사용자명 password: 비밀번호 Returns: True if valid, False otherwise """ try: # API 서버에 비밀번호 검증 요청 response = requests.post( f"{API_URL}/api/ssh/verify", json={"username": username, "password": password}, timeout=5 ) return response.status_code == 200 except Exception as e: print(f"Error: {e}", file=sys.stderr) return False if __name__ == "__main__": # PAM에서 사용자명은 환경 변수로, 비밀번호는 stdin으로 받음 username = os.getenv("PAM_USER") if not username and len(sys.argv) > 1: username = sys.argv[1] # stdin에서 비밀번호 읽기 (PAM이 제공) try: password = sys.stdin.readline().strip() except: password = "" if not username or not password: sys.exit(1) if verify_password(username, password): sys.exit(0) # 성공 else: sys.exit(1) # 실패