122 lines
4.3 KiB
Markdown
122 lines
4.3 KiB
Markdown
# RemminaMac — SSH / RDP Client für macOS
|
|
|
|
Remmina-inspirierter Connection-Manager für macOS, nativ in Swift + SwiftUI.
|
|
|
|

|
|

|
|

|
|
|
|
Layout wie Remmina: **links Profil-Liste mit Suche + Gruppen, rechts Verbindungs-Tabs, unten Statusbar.**
|
|
|
|
## Inhaltsverzeichnis
|
|
- [Features](#features)
|
|
- [Screenshots / Layout](#screenshots--layout)
|
|
- [Schnellstart](#schnellstart)
|
|
- [Installation](docs/INSTALL.md)
|
|
- [Benutzung](docs/USAGE.md)
|
|
- [Architektur](docs/ARCHITECTURE.md)
|
|
- [SSH-Keys & Sicherheit](#ssh-keys--sicherheit)
|
|
- [RDP / VNC unter macOS](#rdp--vnc-unter-macos)
|
|
- [Profile-Format](#profile-format)
|
|
- [Release-Binary](#release-binary)
|
|
- [Fehlerprotokoll](docs/ERRORS.md)
|
|
- [Roadmap](#roadmap)
|
|
- [Lizenz](#lizenz)
|
|
|
|
## Features
|
|
- GUI im Remmina-Layout (`Views/ContentView.swift`):
|
|
- Sidebar: Gruppen-Picker, Suche, Profil-Liste, Doppelklick = Verbinden
|
|
- Detail: Tab-Ansicht offener Sitzungen, Verbindungsdetails, Statusbar
|
|
- Toolbar: Neu / Bearbeiten / Duplizieren / Verbinden / Quick-Connect / SSH-Keys
|
|
- Profile laden / speichern / duplizieren / löschen
|
|
- JSON in `~/Library/Application Support/RemminaMac/profiles.json`
|
|
- Export / Import (siehe Benutzung)
|
|
- Protokolle: SSH, SFTP, RDP, VNC (`Models/ConnectionProfile.swift:3`)
|
|
- SSH-Keys speichern & verwalten (`Views/SSHKeysView.swift`):
|
|
- Import aus `~/.ssh`, Datei-Picker, `ssh-keygen`-Wrapper (ed25519)
|
|
- Passphrases in macOS Keychain (`Security/KeychainHelper.swift`)
|
|
- Passwörter in Keychain, nie im Klartext-JSON
|
|
- SSH via System-`ssh` in Terminal.app (`Services/ConnectionServices.swift:6`)
|
|
- RDP via FreeRDP (`xfreerdp`) oder Fallback Microsoft Remote Desktop
|
|
- VNC via `vnc://`-Scheme
|
|
|
|
## Screenshots / Layout
|
|
```
|
|
+-------------------------------------------------------------+
|
|
| Toolbar: [+][Edit][Copy][Key] | [▶ Verbinden][⚡Quick] |
|
|
+------+-------------------------------+--------------------+
|
|
| Gruppe | Tab: Webserver | Büro-PC | ... | Detail |
|
|
| Suche +-------------------------------+ |
|
|
| - Webserver | Verbindungsdetails (Befehl)| |
|
|
| - Büro-PC | Hinweis | |
|
|
| - Dateiserver+-------------------------------+ |
|
|
+------+-------------------------------+--------------------+
|
|
| Statusbar: ● Bereit ... N Profile · M Sitzungen |
|
|
+-------------------------------------------------------------+
|
|
```
|
|
|
|
## Schnellstart
|
|
```bash
|
|
cd RemminaMac
|
|
swift build
|
|
swift run RemminaMac
|
|
# In Xcode:
|
|
open Package.swift
|
|
# Target RemminaMac → My Mac → Run
|
|
```
|
|
|
|
## SSH-Keys & Sicherheit
|
|
- Private-Key-Pfade stehen in `sshkeys.json`, Passphrases nur in Keychain.
|
|
- Service-Name: `RemminaMac`, Accounts: `profile-<UUID>`, `sshkey-<UUID>`.
|
|
- Keychain lesen/schreiben: `Security/KeychainHelper.swift:5`.
|
|
- Es werden keine Secrets ins Git-Repo geschrieben (siehe `.gitignore`).
|
|
|
|
## RDP / VNC unter macOS
|
|
- Optional: `brew install freerdp`
|
|
- Mit FreeRDP: `xfreerdp /v:HOST:PORT /u:USER [/size:WxH | /f]`
|
|
- Ohne: `rdc://` → Microsoft Remote Desktop (aus App Store installieren)
|
|
- VNC: `open vnc://host:port`
|
|
|
|
## Profile-Format
|
|
```json
|
|
[
|
|
{
|
|
"id": "UUID",
|
|
"name": "Webserver",
|
|
"protocol": "SSH",
|
|
"host": "192.168.1.10",
|
|
"port": 22,
|
|
"username": "admin",
|
|
"group": "Server",
|
|
"colorTag": "blue",
|
|
"resolution": "Automatisch",
|
|
"sshKeyID": null,
|
|
"passwordAccount": "profile-UUID",
|
|
"extraArgs": "",
|
|
"lastConnected": null
|
|
}
|
|
]
|
|
```
|
|
|
|
## Release-Binary
|
|
Fertige Binaries liegen unter Git-Releases (`dist/` wird lokal gebaut, nicht committet):
|
|
```bash
|
|
./scripts/build-release.sh
|
|
./scripts/build-app.sh # RemminaMac.app für /Applications
|
|
./scripts/build-dmg.sh # DMG mit Drag-and-drop auf Programme
|
|
# → dist/RemminaMac-<version>-macos-arm64.zip + .sha256
|
|
# → dist/RemminaMac-<version>-macos-arm64.dmg + .sha256
|
|
ls dist/
|
|
```
|
|
Details: [docs/INSTALL.md](docs/INSTALL.md), [docs/RELEASING.md](docs/RELEASING.md).
|
|
|
|
## Roadmap
|
|
- [ ] Eingebettetes Terminal (SwiftTerm + swift-nio-ssh)
|
|
- [ ] Echte RDP-Einbettung (FreeRDP-Bridge) statt externem Prozess
|
|
- [ ] SFTP-Browser integriert
|
|
- [ ] Export/Import-Buttons in der GUI
|
|
- [ ] Tray / Favoriten / Ordner-Badges wie Remmina
|
|
|
|
## Lizenz
|
|
MIT — siehe `LICENSE`.
|