Це репозиторій з вихідним кодом RDM Manager remote connection manager. Готовий продукт деплоїться в: https://github.com/ajjs1ajjs/RDM Офіційний сайт: https://ajjs1ajjs.github.io/RDM/
Легкий, швидкий та безпечний менеджер віддалених підключень для SRE та DevOps інженерів. Побудований на базі Tauri v2, Rust, React та SQLite.
- SSH-підключення: вбудований термінал на базі
xterm.jsіз автоматичною підгонкою розміру сітки, що працює через системний PTY на Rust. Автозаповнення паролів/парольних фраз та робота з тимчасовими файлами приватних ключів (які безслідно видаляються з диска відразу після закриття сесії). - RDP-підключення (Windows): вбудовані у вкладки додатку RDP-сесії на базі нативного клієнта
mstsc. Завдяки Win32 reparenting та маніпулюванню стилями вікон, сесія інтегрується безпосередньо у вікно RDM Manager (як у Devolutions RDM) та підтримує плавне масштабування (smart sizing) при зміні розмірів вкладки чи приховуванні бічного сайдбара. - SFTP: вбудований файл-менеджер для передачі файлів поверх SSH.
- Сейф облікових записів (Credential Vault): безпечне зберігання логінів, паролів та SSH-ключів із AES-256-GCM шифруванням.
- Командна палітра (Ctrl+P / Ctrl+K): швидкий пошук та підключення до будь-якого сервера без миші.
- Групування та теги: ієрархічне дерево папок (наприклад,
Production/Linux) та швидке фільтрування за смарт-тегами. - Бекап та відновлення: експорт та перевірка сумісності (через sentinel-хеш) при імпорті бази даних
rdm.dbдля уникнення втрати даних. - Імпорт з Devolutions RDM: парсер CSV-таблиць для міграції всіх налаштувань та облікових записів в один клік.
- Безпека буфера обміну: автоматичне очищення буфера обміну через 15 секунд після копіювання паролів для запобігання витоку.
- Автоматичне оновлення: перевірка нових версій і установка безпосередньо всередині програми з прогрес-баром.
| Платформа | SSH / SFTP | Credential Vault | RDP (embedded) | CI збірка |
|---|---|---|---|---|
| Windows 10/11 (x64) | ✅ | ✅ (Credential Manager) | ✅ | ✅ (NSIS + MSI + portable) |
| macOS 11+ (Apple Silicon M1–M4) | ✅ | ✅ (Keychain) | ❌ | ✅ (DMG arm64 native) |
| macOS 11+ (Intel x64) | ✅ | ✅ (Keychain) | ❌ | ✅ (DMG x64) |
| Linux (Ubuntu/Debian) | ✅ | ✅ (Secret Service / GNOME Keyring) | ❌ | ✅ (AppImage/DEB) |
RDP-сесії (вбудований mstsc, Win32 reparenting) працюють лише на Windows.
Виберіть на сторінці релізів:
| Файл | Опис |
|---|---|
RDM-Manager-<ver>-setup.exe |
Універсальний інсталятор (NSIS) — встановлення в %LOCALAPPDATA%, ярлик у меню «Пуск», коректне видалення. |
RDM-Manager-<ver>-setup.msi |
MSI-інсталятор для GPO/SCCM корпоративного розгортання. |
RDM-Manager-<ver>-portable.zip |
Портативна версія — розпакуйте і запустіть rdm-manager.exe. |
Авто-оновлення: Після встановлення програма перевіряє наявність нових версій і пропонує оновитися всередині інтерфейсу з прогрес-баром.
| Файл | Опис |
|---|---|
RDM-Manager-<ver>-macos-arm64.dmg |
Нативний DMG для Apple Silicon (ARM64/aarch64). Робота без Rosetta 2. |
RDM-Manager-<ver>-macos-x64.dmg |
DMG для Intel Mac (x64). |
Підтримує процесори Apple Silicon: M1, M2, M3, M4 та новіші. Мінімальна версія macOS — 11.0 (Big Sur).
| Файл | Опис |
|---|---|
RDM-Manager-<ver>-linux.AppImage |
Universal Linux binary — chmod +x і запуск. |
RDM-Manager-<ver>-linux.deb |
DEB пакет для apt install. |
- KEK (Key Encryption Key): Випадковий 256-бітний ключ шифрування генерується локально (OS CSPRNG) і зберігається в системному сховищі ключів ОС (OS keyring) — Windows Credential Manager або macOS Keychain. У базі даних зберігається лише маркер використання сховища, а не сам ключ. Існуючі сейфи, створені з Windows DPAPI, автоматично мігруються в ключове сховище при першому запуску.
- AES-256-GCM: Облікові дані шифруються за допомогою симетричного алгоритму AES-256-GCM із випадковим 12-байтовим nonce.
- Безпека пам'яті: Ключ дешифрування тримається виключно в оперативній пам'яті бекенду Rust та миттєво занулюється (zeroized) при виході або блокуванні сейфа.
- Sentinel: Контрольний рядок (
rdm-auth-sentinel) використовується для перевірки цілісності ключа. База даних не зберігає жодного пароля у відкритому вигляді. - Бекапи: Експорт/імпорт бази захищаються окремим паролем (PBKDF2-HMAC-SHA256) — це єдиний шлях перенесення даних між машинами (ключ у сховищі ОС прив'язаний до локального користувача).
- Core: Tauri v2, Rust
- Frontend: React (TypeScript), CSS
- Database: SQLite (через
rusqliteзbundledзбіркою) - Crypto: PBKDF2-HMAC-SHA256, AES-256-GCM
- PTY & Terminal:
portable-pty(ConPTY),xterm.js+fit-addon - Utilities:
rfd(Rust File Dialogs),csv
Для збірки необхідні встановлені:
- Node.js (v20+)
- Rust & Cargo (v1.75+)
- C++ Build Tools (MSVC на Windows; Clang на macOS; build-essential на Linux)
Додаткові залежності:
- OpenSSH Client — встановити через
Settings → Apps → Optional Features → Add a feature → OpenSSH Client - .NET 10 SDK (x64) — для вбудованих RDP-сесій (RdpHost). Завантажити з dotnet.microsoft.com
- WebView2 — встановлюється автоматично з інсталятором NSIS; для portable-версії переконайтеся, що
WebView2Loader.dllзнаходиться поруч зrdm-manager.exe
Запуск у режимі розробки:
npm install
npm run tauri devЗбірка релізної версії:
# Повна збірка: NSIS + MSI + portable
npm run build:all
# Або через Tauri напряму:
npm run tauri buildГотові файли збірки будуть знаходитись у каталозі src-tauri/target/release/bundle/.
Додаткові залежності:
- OpenSSH — встановлюється через Xcode Command Line Tools:
xcode-select --install - CMake — для збірки
rusqliteз bundled SQLite:brew install cmake - Підпис додатку (опціонально, для розгортання за межами CI): Apple Developer Account
Запуск у режимі розробки:
npm install
npm run tauri devЗбірка релізної версії (ARM64):
# Збірка тільки для Apple Silicon (aarch64)
npm run tauri build -- --target aarch64-apple-darwin --bundles app,dmgДодаткові залежності:
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libudev-dev patchelf openssh-clientЗапуск у режимі розробки:
npm install
npm run tauri devЗбірка релізної версії:
npm run tauri buildПісля встановлення:
- Запустіть програму — має з'явитися головне вікно з деревом папок.
- Перевірте Credential Vault — при першому запуску сейф автоматично ініціалізується з випадковим ключем у сховищі ОС. Додайте тестовий обліковий запис.
- Перевірте SSH-підключення — додайте сервер, виберіть тестовий SSH-хост, натисніть підключення. У вбудованому терміналі має з'явитися командний рядок.
- Перевірте SFTP — відкрийте вкладку SFTP для цього сервера, перелічіть файли, спробуйте завантажити/вивантажити файл.
- Перевірте бекап/відновлення — Settings → Backup & Restore → Export, потім Import.
- Перевірте авто-оновлення — натисніть "Check for updates" в налаштуваннях, переконайтеся, що додаток коректно виявляє поточну версію.
Локальний файл бази даних зберігається за шляхом:
- Windows:
C:\Users\<Ваш_Користувач>\AppData\Roaming\com.admin.rdm-manager\rdm.db - macOS:
~/Library/Application Support/com.admin.rdm-manager/rdm.db - Linux:
~/.local/share/com.admin.rdm-manager/rdm.db
Увага: файл бази прив'язаний до поточного користувача через системне сховище ключів ОС (keyring). Копіювання файлу працює як бекап на тій самій машині, але для перенесення/синхронізації між пристроями використовуйте Експорт/Імпорт резервної копії (Settings → Backup & Restore) — він захищається паролем і не залежить від локального сховища ключів.
RDM/
├── src/ # React frontend (TypeScript + Vite)
├── src-tauri/
│ ├── src/ # Rust backend
│ │ ├── lib.rs # Tauri commands, vault logic
│ │ ├── crypto.rs # AES-256-GCM, PBKDF2, keyring
│ │ ├── ssh.rs # SSH/PTY backend
│ │ ├── sftp.rs # SFTP via ssh/scp
│ │ ├── rdp.rs # RDP launcher (Windows only)
│ │ └── RdpHost/ # C# WinForms RDP host (embedded)
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri app configuration
├── scripts/ # PowerShell build/release scripts
└── docs/ # Documentation assets
# Збірка тільки portable-версії (Windows)
npm run build:portable
# Повна збірка (NSIS + MSI + portable)
npm run build:all
