#!/usr/bin/env python3 """ 光湖语言系统 · SSH 密钥生成器 Guanghu Language System · SSH Key Generator 用途: 在本地生成 SSH 密钥对 → 公钥部署到服务器 → 私钥存入保险库 一次生成 · 多服务器共用 · 替代 Gatekeeper HTTP 拐弯 用法: python3 generate-ssh-key.py """ import os, subprocess, sys from pathlib import Path KEY_DIR = Path.home() / ".guanghu" / "ssh" KEY_NAME = "guanghu_direct" KEY_PATH = KEY_DIR / KEY_NAME PUB_PATH = KEY_DIR / f"{KEY_NAME}.pub" def run(): print("=" * 60) print(" 光湖语言系统 · SSH 密钥对生成") print("=" * 60) # 1. 创建目录 KEY_DIR.mkdir(parents=True, exist_ok=True) os.chmod(KEY_DIR, 0o700) # 2. 检查是否已存在 if KEY_PATH.exists(): ans = input(f"\n⚠️ {KEY_PATH} 已存在,覆盖?[y/N] ") if ans.lower() != "y": print("→ 跳过,使用已有密钥") show_keys() return # 3. 输入密码(用于加密私钥,和保险库同一个密码) print("\n🔐 输入保险库密码(用于加密私钥):") pw = input(" 密码: ").strip() if not pw or len(pw) < 8: print("❌ 密码至少8位") sys.exit(1) # 4. 生成 Ed25519 密钥对 print(f"\n🔑 生成 Ed25519 密钥对...") result = subprocess.run([ "ssh-keygen", "-t", "ed25519", "-f", str(KEY_PATH), "-N", pw, # 用密码加密私钥 "-C", "guanghu-direct-ssh" ], capture_output=True, text=True) if result.returncode != 0: print(f"❌ 生成失败: {result.stderr}") sys.exit(1) os.chmod(KEY_PATH, 0o600) os.chmod(PUB_PATH, 0o644) # 5. 显示结果 print(f"\n✅ 密钥对生成成功!\n") print(f" 私钥: {KEY_PATH}") print(f" 公钥: {PUB_PATH}") print() show_keys() def show_keys(): """显示公钥内容""" pub = PUB_PATH.read_text().strip() print(f"📤 公钥(发给我部署到服务器):\n") print(f" {pub}") print(f"\n --- 复制上面这行发给我 ---") print() print(f"📥 私钥位置: {KEY_PATH}") print(f" (留在本地,不要发给任何人)") print() print(f"🔐 连接服务器:") print(f" ssh -i {KEY_PATH} root@<服务器IP>") if __name__ == "__main__": run()