diff --git a/core/claude_setup.py b/core/claude_setup.py index d08364a..30d79f9 100644 --- a/core/claude_setup.py +++ b/core/claude_setup.py @@ -113,22 +113,23 @@ def generate_ssh_key() -> str: os.makedirs(os.path.dirname(SSH_KEY_PATH), exist_ok=True) + import subprocess try: - import paramiko - except ImportError: - msg = "ERROR: paramiko is not installed — cannot generate SSH key" + subprocess.run( + ["ssh-keygen", "-t", "ed25519", "-f", SSH_KEY_PATH, + "-N", "", "-C", "server-manager"], + check=True, capture_output=True, timeout=15 + ) + log.info(f"SSH key generated: {SSH_KEY_PATH}") + return f"Key generated: {SSH_KEY_PATH}" + except FileNotFoundError: + msg = "ERROR: ssh-keygen not found — install openssh-client" + log.error(msg) + return msg + except subprocess.CalledProcessError as e: + msg = f"ERROR: ssh-keygen failed: {e.stderr.decode().strip()}" log.error(msg) return msg - - key = paramiko.Ed25519Key.generate() - key.write_private_key_file(SSH_KEY_PATH) - - pub_key = f"ssh-ed25519 {key.get_base64()} server-manager" - with open(SSH_KEY_PATH + ".pub", "w") as f: - f.write(pub_key + "\n") - - log.info(f"SSH key generated: {SSH_KEY_PATH}") - return f"Key generated: {SSH_KEY_PATH}" def install_global_claude_md() -> str: diff --git a/releases/ServerManager-v1.8.70-linux-x64 b/releases/ServerManager-v1.8.70-linux-x64 new file mode 100644 index 0000000..311c3c5 Binary files /dev/null and b/releases/ServerManager-v1.8.70-linux-x64 differ diff --git a/version.py b/version.py index 8b8fd35..9cf1e88 100755 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ """Version info for ServerManager.""" -__version__ = "1.8.69" +__version__ = "1.8.70" __app_name__ = "ServerManager" __author__ = "aibot777" __description__ = "Desktop GUI for managing remote servers"