v1.8.70: fix SSH key generation — use ssh-keygen instead of broken paramiko
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -113,22 +113,23 @@ def generate_ssh_key() -> str:
|
|||||||
|
|
||||||
os.makedirs(os.path.dirname(SSH_KEY_PATH), exist_ok=True)
|
os.makedirs(os.path.dirname(SSH_KEY_PATH), exist_ok=True)
|
||||||
|
|
||||||
|
import subprocess
|
||||||
try:
|
try:
|
||||||
import paramiko
|
subprocess.run(
|
||||||
except ImportError:
|
["ssh-keygen", "-t", "ed25519", "-f", SSH_KEY_PATH,
|
||||||
msg = "ERROR: paramiko is not installed — cannot generate SSH key"
|
"-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)
|
log.error(msg)
|
||||||
return 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:
|
def install_global_claude_md() -> str:
|
||||||
|
|||||||
BIN
releases/ServerManager-v1.8.70-linux-x64
Normal file
BIN
releases/ServerManager-v1.8.70-linux-x64
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
"""Version info for ServerManager."""
|
"""Version info for ServerManager."""
|
||||||
|
|
||||||
__version__ = "1.8.69"
|
__version__ = "1.8.70"
|
||||||
__app_name__ = "ServerManager"
|
__app_name__ = "ServerManager"
|
||||||
__author__ = "aibot777"
|
__author__ = "aibot777"
|
||||||
__description__ = "Desktop GUI for managing remote servers"
|
__description__ = "Desktop GUI for managing remote servers"
|
||||||
|
|||||||
Reference in New Issue
Block a user