Files
vconnect-api/scripts/pam_vconnect_auth.py
2025-12-08 21:35:55 +09:00

55 lines
1.3 KiB
Python

#!/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) # 실패