2026-03-06 05:48:21 -05:00
2026-02-24 06:17:25 -05:00

ServerManager

Desktop GUI for managing remote servers
CustomTkinter + Paramiko | Dark Theme | Claude Code Integration

English | Русский | 中文


English

Features

  • Server CRUD — add, edit, delete servers (SSH, Telnet, RDP, MariaDB, MSSQL, PostgreSQL)
  • SSH Terminal — execute commands with auto-sudo (password via stdin, invisible in ps)
  • SFTP Transfer — upload/download files with progress bar
  • SSH Keys — generate ed25519, install on server, copy to clipboard
  • Status Monitor — background check every 60 sec (online/offline badges)
  • Claude Code Integration — one-click setup, shared config with /ssh skill
  • TOTP / 2FA — Google Authenticator compatible codes with live countdown, one-click copy
  • Encryption — servers.json encrypted with Fernet (passwords never stored in plaintext)
  • Backups — manual and automatic backups with one-click restore
  • Configurable Config Path — change servers.json location via GUI
  • Localization — GUI in English, Russian, Chinese with language switcher
  • About Dialog — app info, features, quick start guide
  • Dark Theme — modern CustomTkinter interface

Installation

From source

git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager
pip install -r requirements.txt
python main.py

Pre-built binary

Download from releases/ folder — standalone .exe (Windows) or binary (Linux/Mac). No Python installation required.

Building

Build for your current platform:

pip install pyinstaller
python build.py

Output goes to releases/ServerManager-vX.Y.Z-{platform}.exe

Usage

  1. Launchpython main.py or run the executable
  2. Add server — click "+ Add" in sidebar, fill alias, IP, port, user, password, type
  3. Terminal — select server → Terminal tab → type command → Run
  4. Files — select server → Files tab → set paths → Upload/Download
  5. Keys — Keys tab → Generate Key → Install on Server
  6. Setup — Setup tab → "Install Everything" → Claude Code ready
  7. Status badges update automatically (green = online, red = offline)

Claude Code Integration

ServerManager and Claude Code share the same config file: ~/.server-connections/servers.json

How it works:

ServerManager GUI  ←→  ~/.server-connections/servers.json  ←→  ssh.py (Claude Code)
      ↕                                                          ↕
  Add/edit/delete                                           /ssh skill
  servers in GUI                                         executes commands
  • Add a server in GUI → Claude Code sees it immediately via /ssh list
  • Both use the same ssh.py + servers.json
  • Passwords never pass through the AI API

New SSH Commands:

  • ssh.py --info ALIAS — safe server information (no credentials)
  • ssh.py --set-note ALIAS "desc" — update server notes
  • ssh.py --list now shows Notes column
  • Fuzzy alias search: search by keyword (e.g., "tor" finds "API TOR contabo..."), word-boundary priority
  • SFTP path fix: remote path normalization for Windows/Git Bash with double slash //
  • --no-sudo flag for commands that don't need elevation
  • Upload/download progress: files >=1MB show 25/50/75% milestones with size, time, and speed

Setup on a new machine:

  1. Install ServerManager (clone repo or download binary)
  2. Open Setup tab → click "Install Everything"
  3. Done. Claude Code now has /ssh skill and access to your servers

The Setup tab installs:

  • ssh.py~/.server-connections/ (SSH utility)
  • encryption.py~/.server-connections/ (encryption module for CLI)
  • /ssh skill → ~/.claude/commands/ssh.md (Claude Code skill)
  • SSH key (ed25519) — if not exists
  • Checks for duplicates — safe to run multiple times

Configuration

Shared config location: ~/.server-connections/servers.json (encrypted with Fernet).

The config path can be changed via Setup tab → Configuration → "Change Path".

Settings are stored in ~/.server-connections/settings.json.

Backups:

  • Automatic backups every 10 minutes (on save)
  • Manual backup via Setup tab → "Backup Now"
  • Restore from any backup via dropdown + "Restore"
  • Backups stored in ~/.server-connections/backups/
  • Pre-encryption backup created automatically on first migration

Auto-sudo

The app automatically handles privilege escalation:

  • If user: "root" — commands execute directly, no sudo needed
  • If user is non-root — the app automatically wraps the command in sudo -S and feeds the password from servers.json via stdin
  • The password is never passed as a command-line argument (invisible in ps aux)
  • You just type the command (e.g. systemctl restart nginx) — the app decides whether sudo is needed and handles it
  • In the GUI terminal, the "sudo" checkbox is enabled by default for non-root users; uncheck it for commands that don't need elevation
You type:     systemctl restart nginx
App executes: sudo -S -p '' bash -c 'systemctl restart nginx'
              (password fed automatically via stdin from servers.json)

Security

  • servers.json is encrypted (Fernet symmetric encryption) — passwords not readable in plaintext
  • servers.json is in .gitignore — never committed
  • Passwords stored locally only, never sent to any AI/API
  • SSH keys (ed25519) — recommended auth method
  • sudo password sent via stdin (not visible in process list)
  • When used with Claude Code: only alias + command are passed through the AI API, passwords stay in the local encrypted file
  • Automatic pre-encryption backup on first migration

Project Structure

ServerManager/
├── main.py              # Entry point
├── version.py           # Version info
├── build.py             # PyInstaller build script
├── core/                # Business logic
│   ├── server_store.py  # CRUD + encrypted JSON + observer + backups
│   ├── encryption.py    # Fernet encryption module
│   ├── ssh_client.py    # Paramiko SSH/SFTP wrapper
│   ├── claude_setup.py  # Claude Code integration installer
│   ├── status_checker.py # Background monitoring
│   ├── totp.py          # TOTP/2FA module (pyotp)
│   ├── logger.py        # Rotating file logger
│   └── connection_factory.py
├── gui/                 # CustomTkinter UI
│   ├── app.py           # Main window
│   ├── sidebar.py       # Server list + search
│   ├── server_dialog.py # Add/Edit modal
│   ├── tabs/            # Terminal, Files, Info, Keys, Setup
│   └── widgets/         # StatusBadge
├── tools/               # CLI tools (installed to ~/.server-connections/)
│   ├── ssh.py           # SSH utility for Claude Code
│   └── skill-ssh.md     # /ssh skill template
├── config/              # Example configs
├── releases/            # Built executables
└── README.md            # This file (EN/RU/ZH)

Deploy on a new machine

# 1. Clone
git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager

# 2. Install deps
pip install -r requirements.txt

# 3. Launch and setup
python main.py
# → Setup tab → Install Everything
# → Add your servers via + Add
# → Done! Both GUI and Claude Code are ready

Русский

Возможности

  • Управление серверами — добавление, редактирование, удаление (SSH, Telnet, RDP, MariaDB, MSSQL, PostgreSQL)
  • SSH-терминал — выполнение команд с авто-sudo (пароль через stdin, не виден в ps)
  • SFTP — загрузка и скачивание файлов с прогресс-баром
  • SSH-ключи — генерация ed25519, установка на сервер, копирование
  • Мониторинг — фоновая проверка каждые 60 сек (бейджи online/offline)
  • Интеграция с Claude Code — установка в один клик, общий конфиг со скиллом /ssh
  • TOTP / 2FA — коды Google Authenticator с обратным отсчётом, копирование в один клик
  • Шифрование — servers.json зашифрован Fernet (пароли не хранятся в открытом виде)
  • Бэкапы — ручные и автоматические с восстановлением в один клик
  • Настраиваемый путь конфига — смена расположения servers.json через GUI
  • Локализация — интерфейс на английском, русском, китайском с переключателем
  • О программе — информация о приложении, возможности, быстрый старт
  • Тёмная тема — современный интерфейс CustomTkinter

Установка

Из исходников

git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager
pip install -r requirements.txt
python main.py

Готовый бинарник

Скачайте из папки releases/ — автономный .exe (Windows) или бинарник (Linux/Mac). Python не требуется.

Сборка

Сборка под текущую платформу:

pip install pyinstaller
python build.py

Результат в releases/ServerManager-vX.Y.Z-{платформа}.exe

Использование

  1. Запускpython main.py или запустите скомпилированный файл
  2. Добавить сервер — нажмите "+ Add" в боковой панели, заполните alias, IP, порт, пользователь, пароль, тип
  3. Терминал — выберите сервер → вкладка Terminal → введите команду → Run
  4. Файлы — выберите сервер → вкладка Files → укажите пути → Upload/Download
  5. Ключи — вкладка Keys → Generate Key → Install on Server
  6. Настройка Claude — вкладка Setup → "Install Everything" → Claude Code готов
  7. Бейджи статуса обновляются автоматически (зелёный = online, красный = offline)

Интеграция с Claude Code

ServerManager и Claude Code используют один и тот же файл конфигурации: ~/.server-connections/servers.json

Как это работает:

ServerManager GUI  ←→  ~/.server-connections/servers.json  ←→  ssh.py (Claude Code)
      ↕                                                          ↕
  Добавил/изменил                                           скилл /ssh
  сервер в GUI                                          выполняет команды
  • Добавил сервер в GUI → Claude Code сразу видит его через /ssh list
  • Оба используют один ssh.py + servers.json
  • Пароли никогда не проходят через API нейронки

Новые SSH команды:

  • ssh.py --info ALIAS — безопасная информация о сервере (без учетных данных)
  • ssh.py --set-note ALIAS "desc" — обновление заметок сервера
  • ssh.py --list теперь показывает колонку Notes
  • Нечеткий поиск по алиасу: поиск по ключевому слову (например, "tor" находит "API TOR contabo..."), приоритет границ слова
  • Исправление пути SFTP: нормализация удаленного пути для Windows/Git Bash с двойным слешем //
  • Флаг --no-sudo для команд, не требующих повышения привилегий
  • Прогресс upload/download: файлы >=1MB показывают 25/50/75% с размером, временем и скоростью

Настройка на новой машине:

  1. Установить ServerManager (клонировать репо или скачать бинарник)
  2. Открыть вкладку Setup → нажать "Install Everything"
  3. Готово. Claude Code теперь имеет скилл /ssh и доступ к серверам

Вкладка Setup устанавливает:

  • ssh.py~/.server-connections/ (SSH-утилита)
  • encryption.py~/.server-connections/ (модуль шифрования для CLI)
  • скилл /ssh~/.claude/commands/ssh.md (скилл Claude Code)
  • SSH-ключ (ed25519) — если ещё не создан
  • Проверяет дубли — безопасно запускать повторно

Конфигурация

Общий конфиг: ~/.server-connections/servers.json (зашифрован Fernet).

Путь к конфигу можно изменить: вкладка Setup → Configuration → "Change Path".

Настройки хранятся в ~/.server-connections/settings.json.

Бэкапы:

  • Автоматические бэкапы каждые 10 минут (при сохранении)
  • Ручной бэкап: вкладка Setup → "Backup Now"
  • Восстановление из любого бэкапа через dropdown + "Restore"
  • Бэкапы хранятся в ~/.server-connections/backups/
  • Пред-шифровальный бэкап создаётся автоматически при первой миграции

Авто-sudo

Приложение автоматически повышает привилегии:

  • Если user: "root" — команды выполняются напрямую, sudo не нужен
  • Если пользователь не root — приложение автоматически оборачивает команду в sudo -S и само вводит пароль из servers.json через stdin
  • Пароль никогда не передаётся как аргумент командной строки (не виден в ps aux)
  • Вы просто вводите команду (например systemctl restart nginx) — приложение само решает, нужен sudo или нет, и само всё делает
  • В GUI-терминале checkbox "sudo" включён по умолчанию для non-root; отключите для команд, не требующих повышения
Вы вводите:         systemctl restart nginx
Приложение делает:  sudo -S -p '' bash -c 'systemctl restart nginx'
                    (пароль подставляется автоматически из servers.json через stdin)

Безопасность

  • servers.json зашифрован (Fernet симметричное шифрование) — пароли не читаемы в открытом виде
  • servers.json в .gitignore — никогда не коммитится
  • Пароли хранятся только локально, никогда не передаются в AI/API
  • SSH-ключи (ed25519) — рекомендуемый метод аутентификации
  • sudo-пароль передаётся через stdin (не виден в списке процессов)
  • При использовании с Claude Code: через API нейронки проходят только alias + команда, пароли остаются в зашифрованном локальном файле
  • Автоматический пред-шифровальный бэкап при первой миграции

Развёртывание на новой машине

# 1. Клонировать
git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager

# 2. Установить зависимости
pip install -r requirements.txt

# 3. Запустить и настроить
python main.py
# → Вкладка Setup → Install Everything
# → Добавить серверы через + Add
# → Готово! GUI и Claude Code работают с одним конфигом

中文

功能特点

  • 服务器管理 — 添加、编辑、删除服务器SSH、Telnet、RDP、MariaDB、MSSQL、PostgreSQL
  • SSH终端 — 自动sudo执行命令密码通过stdin传递ps中不可见)
  • SFTP传输 — 带进度条的文件上传/下载
  • SSH密钥 — 生成ed25519、安装到服务器、复制到剪贴板
  • 状态监控 — 每60秒后台检查在线/离线徽标)
  • Claude Code集成 — 一键设置,与/ssh技能共享配置
  • TOTP / 2FA — 兼容Google Authenticator的验证码实时倒计时一键复制
  • 加密 — servers.json使用Fernet加密密码不再以明文存储
  • 备份 — 手动和自动备份,一键恢复
  • 可配置路径 — 通过GUI更改servers.json位置
  • 多语言 — 支持英语、俄语、中文界面切换
  • 关于对话框 — 应用信息、功能特点、快速入门
  • 深色主题 — 现代CustomTkinter界面

安装

从源码安装

git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager
pip install -r requirements.txt
python main.py

预编译版本

releases/ 文件夹下载 — 独立的 .exeWindows或二进制文件Linux/Mac。 无需安装Python。

编译

为当前平台编译:

pip install pyinstaller
python build.py

输出至 releases/ServerManager-vX.Y.Z-{平台}.exe

使用方法

  1. 启动python main.py 或运行可执行文件
  2. 添加服务器 — 点击侧栏 "+ Add"填写别名、IP、端口、用户名、密码、类型
  3. 终端 — 选择服务器 → Terminal标签 → 输入命令 → Run
  4. 文件 — 选择服务器 → Files标签 → 设置路径 → Upload/Download
  5. 密钥 — Keys标签 → Generate Key → Install on Server
  6. 设置Claude — Setup标签 → "Install Everything" → Claude Code就绪
  7. 状态徽标自动更新(绿色 = 在线,红色 = 离线)

Claude Code集成

ServerManager和Claude Code共享同一个配置文件~/.server-connections/servers.json

工作原理:

ServerManager GUI  ←→  ~/.server-connections/servers.json  ←→  ssh.py (Claude Code)
      ↕                                                          ↕
  在GUI中添加/编辑                                           /ssh技能
  服务器                                                   执行命令
  • 在GUI中添加服务器 → Claude Code立即通过 /ssh list 看到
  • 两者使用相同的 ssh.py + servers.json
  • 密码绝不通过AI API传递

在新机器上设置:

  1. 安装ServerManager克隆仓库或下载二进制文件
  2. 打开Setup标签 → 点击 "Install Everything"
  3. 完成。Claude Code现在拥有 /ssh 技能并可访问您的服务器

Setup标签安装

  • ssh.py~/.server-connections/SSH工具
  • encryption.py~/.server-connections/CLI加密模块
  • /ssh 技能 → ~/.claude/commands/ssh.mdClaude Code技能
  • SSH密钥ed25519— 如果不存在
  • 检查重复 — 可安全重复运行

配置

共享配置位置:~/.server-connections/servers.jsonFernet加密

可通过 Setup标签 → Configuration → "Change Path" 更改配置路径。

设置存储在 ~/.server-connections/settings.json

备份:

  • 每10分钟自动备份保存时
  • 手动备份Setup标签 → "Backup Now"
  • 从任何备份恢复:下拉菜单 + "Restore"
  • 备份存储在 ~/.server-connections/backups/
  • 首次迁移时自动创建加密前备份

自动sudo

应用自动处理权限提升:

  • 如果 user: "root" — 命令直接执行无需sudo
  • 如果用户不是root — 应用自动将命令包装在 sudo -S 中,并从 servers.json 通过stdin自动输入密码
  • 密码绝不作为命令行参数传递(在 ps aux 中不可见)
  • 您只需输入命令(例如 systemctl restart nginx)— 应用自动判断是否需要sudo并处理
  • 在GUI终端中"sudo"复选框默认为非root用户启用对于不需要提权的命令可以取消勾选
您输入:      systemctl restart nginx
应用执行:    sudo -S -p '' bash -c 'systemctl restart nginx'
            (密码从servers.json通过stdin自动输入)

安全性

  • servers.json 已加密Fernet对称加密— 密码无法以明文读取
  • servers.json.gitignore 中 — 永不提交
  • 密码仅存储在本地,绝不发送到任何AI/API
  • SSH密钥ed25519— 推荐的认证方式
  • sudo密码通过stdin传递在进程列表中不可见
  • 与Claude Code配合使用时只有别名和命令通过AI API传递密码保留在本地加密文件中
  • 首次迁移时自动创建加密前备份

在新机器上部署

# 1. 克隆
git clone https://git.sensey24.ru/aibot777/server-manager.git
cd server-manager

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动并设置
python main.py
# → Setup标签 → Install Everything
# → 通过 + Add 添加服务器
# → 完成GUI和Claude Code使用同一个配置

License

MIT

Author

aibot777

Description
Desktop GUI for managing remote servers (CustomTkinter + Paramiko)
Readme 3.9 GiB
v1.9.44 Latest
2026-03-07 07:34:58 +00:00
Languages
Python 96.1%
Shell 2.3%
JavaScript 1.1%
Batchfile 0.5%