Diese Seite beschreibt Calíope 1.5, die Version, die ich gerade baue. Die 1.4 ist im App Store für Mac, iPad, iPhone, Apple Watch, Apple TV und Apple Vision Pro. Das Changelog sagt, in welcher Version jede Funktion kam.
Fügt jedem Thema einen Button „In Calíope öffnen“ hinzu. Funktioniert nur mit installierter App.
Verbinde dich mit einem Datenbankserver hinter einem SSH-Bastion, ohne seinen Port freizugeben.
Wo es zu finden ist: Seitenleiste › Profilformular › SSH-Tunnel
Ein SSH-Tunnel (auch Portweiterleitung genannt) ermöglicht es Calíope, mit einem Datenbankserver zu kommunizieren, der aus deinem Netzwerk nicht direkt erreichbar ist. Statt sich direkt mit dem Host des Servers zu verbinden, öffnet Calíope zuerst eine SSH-Session zu einem Bastion-Server und legt über diese Session einen verschlüsselten Kanal zum internen Server an.
Typischer Anwendungsfall: Deine Datenbank liegt in einem privaten Netzwerk von AWS, GCP oder DigitalOcean unter 10.0.1.5:3306, aber nur der Bastion-Server unter bastion.firma.com:22 ist aus dem Internet erreichbar. Calíope öffnet den Tunnel beim Verbinden automatisch und schließt ihn beim Trennen.
Die Datenbankverbindung funktioniert genauso wie ohne Tunnel; der Tunnel ist für den Rest der Werkzeuge vollständig transparent.
Aktiviere den Tunnel im Verbindungsprofil und gib die Daten des Bastions ein.
Wo es zu finden ist: Seitenleiste › Profilformular › SSH-Tunnel
Wähle im Verbindungsmanager das Profil aus und aktiviere den Schalter SSH-Tunnel im Abschnitt Server-Optionen. Es erscheint der Konfigurationsabschnitt mit den Feldern:
- SSH-Host — Name oder IP des Bastion-Servers (z. B. bastion.firma.com)
- SSH-Port — normalerweise 22
- SSH-Benutzer — Benutzer, mit dem du dich am Bastion authentifizierst (z. B. ubuntu, ec2-user)
- Authentifizierung — wähle zwischen Passwort oder Privater Schlüssel
Die Felder Host / IP und Port des Hauptprofils bleiben das Datenbankziel aus Sicht des Bastions, nicht aus Sicht deines Rechners. Wenn der Datenbankserver auf demselben Rechner wie der Bastion läuft, verwende 127.0.0.1.
Klick auf Verbindung testen, um den kompletten Tunnel vor dem Verbinden zu prüfen.
Verwende Benutzer und Passwort des Bastions, um den Tunnel zu authentifizieren.
Wo es zu finden ist: Seitenleiste › Profilformular › SSH-Tunnel › Authentifizierung
Wähle Passwort in der Authentifizierungsauswahl im Abschnitt SSH-Tunnel. Es erscheint das Feld SSH-Passwort, in das du das Passwort des Benutzers auf dem Bastion-Server eingibst.
Das Passwort wird im Schlüsselbund (Keychain) von macOS gespeichert, niemals in der Profildatei. Es wird unter dem internen Schlüssel ssh-pass-<Profil-ID> abgelegt und ist nur für Calíope zugänglich.
Diese Methode ist die einfachste, aber beachte, dass viele moderne Server die Passwort-Authentifizierung zugunsten kryptografischer Schlüssel deaktivieren.
Verwende einen ED25519- oder ECDSA-Schlüssel, mit oder ohne Passphrase, um den Tunnel zu authentifizieren.
Wo es zu finden ist: Seitenleiste › Profilformular › SSH-Tunnel › Privater Schlüssel
Wähle Privater Schlüssel in der Authentifizierungsauswahl. Es erscheint die Schaltfläche Auswählen, um die Schlüsseldatei zu wählen.
Auf dem Mac speichert Calíope einen sicheren Zugriff auf die Datei (security-scoped bookmark), um sie bei späteren Starts lesen zu können, ohne dass du sie erneut auswählst. ⚠️ Wenn du die Schlüsseldatei verschiebst oder umbenennst, kann Calíope sie bei der nächsten Verbindung nicht lesen und zeigt den Fehler "Die SSH-Schlüsseldatei ist nicht mehr zugänglich"; öffne dann das Profil und wähle die Datei an ihrem neuen Ort aus.
Auf iPad und iPhone legt das Auswählen oder Einfügen des Schlüssels eine Kopie in Calíope auf diesem Gerät ab: Das Original zu verschieben ändert nichts daran, und sie wandert nie in die iCloud, auch nicht mit eingeschalteter Synchronisierung.
Auf jedem anderen Gerät kommt das Profil ohne den Schlüssel an: Die Datei und ihr Speicherort bleiben auf dem Gerät, auf dem du ihn ausgewählt hast. Die Verbindungsliste zeigt Dateien auf diesem Gerät auswählen, und das Formular sagt „Dieses Profil verwendet einen privaten Schlüssel, der auf einem anderen Gerät ausgewählt wurde: Wählen Sie ihn hier aus.“: Wähl ihn dort aus.
Die Schlüssel müssen im nativen OpenSSH-Format vorliegen (Kopfzeile -----BEGIN OPENSSH PRIVATE KEY-----). Das ist seit OpenSSH 7.8 das Standardformat von ssh-keygen.
Schlüssel mit Passphrase funktionieren. Trage die Passphrase im Profil ein und Calíope entschlüsselt den Schlüssel selbst (bcrypt-pbkdf + AES-256) — auf dem Mac, dem iPad und dem iPhone gleichermaßen; der entschlüsselte Schlüssel landet nie auf der Festplatte. Ist die Passphrase falsch, sagt es das — und verwechselt das nicht mit einer unlesbaren Datei.
⚠️ RSA-Schlüssel werden nicht unterstützt (Einschränkung der zugrunde liegenden SSH-Bibliothek). Wenn dein Bastion nur RSA akzeptiert, verwende die Passwort-Authentifizierung oder erzeuge einen neuen ED25519-Schlüssel und füge seinen öffentlichen Schlüssel dem Bastion hinzu.
Einen neuen ED25519-Schlüssel erzeugen:
ssh-keygen -t ed25519 -C "caliope@mein-mac"
Kopiere den öffentlichen Schlüssel (~/.ssh/id_ed25519.pub) auf den Bastion: ~/.ssh/authorized_keys.
Die Schaltfläche Verbindung testen prüft den SSH-Tunnel und die Anmeldung an der Datenbank durchgängig.
Wo es zu finden ist: Verbindungsmanager › Verbindung testen
Wenn du Verbindung testen bei einem Profil mit aktivem SSH-Tunnel drückst, führt Calíope die komplette Sequenz aus:
1. Baut eine TCP-Verbindung zum SSH-Bastion auf (SSH-Host : SSH-Port)
2. Handelt das SSH-Protokoll aus und authentifiziert mit den konfigurierten Anmeldedaten
3. Öffnet einen direct-tcpip-Kanal vom Bastion zum Datenbank-Host
4. Startet einen lokalen Proxy auf einem flüchtigen Port von 127.0.0.1
5. Verbindet sich mit dem Treiber der Engine mit diesem lokalen Port und führt SELECT 1 aus
6. Schließt den Tunnel nach Abschluss des Tests
Wenn der Test erfolgreich ist, siehst du den grünen Banner mit der Version des Servers. Schlägt er fehl, gibt die Fehlermeldung an, in welchem Schritt das Problem aufgetreten ist (SSH-Authentifizierung, Datenbank-Host nicht erreichbar, falsche Datenbank-Anmeldedaten usw.).
Stichwörter: ssh testen, test tunnel, tunnel prüfen, ssh verbindung testen, grüner banner
Calíope überprüft den Fingerabdruck des SSH-Servers, um dich vor MITM-Angriffen zu schützen.
Wo es zu finden ist: Verbindungsmanager › SSH-Schlüsselwarnung
Wenn Calíope sich zum ersten Mal mit einem SSH-Server verbindet, zeigt es den SHA256-Fingerabdruck seines öffentlichen Schlüssels an und bittet vor dem Fortfahren um Bestätigung. Dieses Verhalten entspricht StrictHostKeyChecking=yes in OpenSSH.
Erste Verbindung:
Calíope zeigt den Fingerabdruck an und bittet dich zu bestätigen, dass er zum erwarteten Server gehört. Klick auf Vertrauen und verbinden, um ihn zu akzeptieren. Der Fingerabdruck wird im Schlüsselbund deines Geräts gespeichert.
Spätere Verbindungen:
Wenn der Fingerabdruck des Servers mit dem gespeicherten übereinstimmt, wird die Verbindung ohne Unterbrechung fortgesetzt.
Wenn sich der Schlüssel geändert hat:
Calíope zeigt eine rote Warnung an: Der Schlüssel des Servers hat sich geändert. Das kann bedeuten:
- Dass der Administrator den Schlüssel neu erzeugt hat (üblich nach Neuinstallationen oder Migrationen).
- Einen möglichen Man-in-the-Middle-Angriff (MITM) in nicht vertrauenswürdigen Netzwerken.
Bestätige dies beim Administrator, bevor du auf Aktualisieren und verbinden klickst.
Einen gespeicherten Schlüssel löschen:
Um die erneute Überprüfung zu erzwingen, entferne den Fingerabdruck aus dem Schlüsselbund mit der App Schlüsselbundverwaltung, indem du nach caliope.ssh.hostkey suchst.
Häufige Fehler des SSH-Tunnels und wie du sie löst.
"Connection refused" beim Verbinden mit dem Bastion
Prüfe, ob der SSH-Host und der Port (standardmäßig 22) korrekt sind und ob die Firewall des Bastions eingehende Verbindungen auf diesem Port erlaubt.
"Authentication failed" oder keine Antwort vom Bastion
Bei Passwort: prüfe SSH-Benutzer und -Passwort. Bei privatem Schlüssel: stelle sicher, dass der zugehörige öffentliche Schlüssel in ~/.ssh/authorized_keys des Bastions liegt und dass der Server die Authentifizierung per öffentlichem Schlüssel erlaubt (PubkeyAuthentication yes in /etc/ssh/sshd_config).
"Die Passphrase des privaten SSH-Schlüssels ist falsch"
Der Schlüssel wurde gelesen und die Passphrase entschlüsselt ihn nicht. Prüfe das Feld Passphrase im Profil; es ist weder das Passwort des SSH-Benutzers noch das der Datenbank.
"Nicht unterstützter SSH-Schlüsseltyp: ssh-rsa"
RSA-Schlüssel sind nicht kompatibel. Erzeuge einen ED25519-Schlüssel und füge seinen öffentlichen Schlüssel dem Bastion hinzu.
"Die SSH-Schlüsseldatei hat kein gültiges Format"
Der Schlüssel muss im nativen OpenSSH-Format vorliegen. Konvertiere ihn mit: ssh-keygen -p -m OpenSSH -f dein_schlüssel
Server vom Bastion aus nicht erreichbar
Das Feld Host des Profils muss der Datenbank-Host aus Sicht des Bastions sein. Probiere 127.0.0.1, wenn der Datenbankserver auf demselben Rechner wie der Bastion läuft, oder die private IP (z. B. 10.0.1.5), wenn es auf einem anderen Rechner im selben Netzwerk liegt.
Der Tunnel funktioniert, aber der Server weist die Verbindung ab
Die Datenbank-Anmeldedaten (Benutzer/Passwort) sind von den SSH-Daten unabhängig. Prüfe, ob der Datenbankbenutzer die Berechtigung hat, sich von 127.0.0.1 oder von der IP des Bastions aus zu verbinden.
Stichwörter: ssh fehler, troubleshooting, beheben, connection refused, authentication failed, ungültiges format, rsa nicht unterstützt, passphrase
SSH-Fingerabdruck des Servers überprüfen (known hosts)
Wie Calíope die Identität des SSH-Servers authentifiziert und was zu tun ist, wenn der Dialog für einen neuen oder geänderten Fingerabdruck erscheint.
Wenn du dich zum ersten Mal mit einem SSH-Server verbindest, kennt Calíope dessen öffentlichen Schlüssel nicht. Bevor der Tunnel abgeschlossen wird, zeigt dir die App den SHA-256-Fingerabdruck des Schlüssels an, damit du ihn überprüfst und entscheidest, ob du ihm vertraust.
Der Dialog erscheint bei jeder Aktion, die den Tunnel öffnet, nicht nur beim Verbinden: Eine Verbindung zu testen oder die Datenbanken eines Profils zu laden fragt genauso, und wer dort zustimmt, speichert den Fingerabdruck genauso.
Format des Fingerabdrucks
- Calíope berechnet den Fingerabdruck genauso wie ssh-keygen -l -E sha256, im Format SHA256:<base64-ohne-padding>.
- Du kannst denselben Fingerabdruck auf dem Server erhalten mit: ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub -E sha256.
Dialog "Unbekannter Server" (neuer Fingerabdruck)
- Oranges Symbol eines durchgestrichenen Schilds.
- Zeigt host:port und den empfangenen Fingerabdruck.
- Vertrauen und verbinden — speichert den Fingerabdruck im Schlüsselbund mit der Kennung caliope.ssh.hostkey.<host>:<port> und fährt mit dem Tunnel fort.
- Abbrechen — bricht die Verbindung ab, ohne etwas zu speichern.
Dialog "Der Fingerabdruck des Servers hat sich geändert" (rote Warnung)
- Rotes Symbol eines Schilds mit Ausrufezeichen.
- Erscheint, wenn der empfangene Fingerabdruck NICHT mit dem übereinstimmt, den du zuvor gespeichert hast. Das kann bedeuten:
- Dass der Administrator den Serverschlüssel rotiert hat (legitimer Fall).
- Dass ein anderer Server unter derselben IP/demselben Port antwortet (möglicher MITM-Angriff).
- Zeigt beide Fingerabdrücke: den bekannten und den neuen, damit du vergleichen kannst.
- Aktualisieren und verbinden — überschreibt den gespeicherten Fingerabdruck und verbindet. Verwende dies nur, wenn du die Rotation über einen Out-of-band-Kanal bestätigt hast.
- Abbrechen — behält den vorherigen Fingerabdruck bei und bricht ab.
Bildschirme, die nicht fragen können
- Monitor, Topologie, geplante Berichte und das Wiederverbinden haben keinen Dialog, in dem du entscheiden könntest. Ist der Server noch nicht unter denen, denen du vertraust, brechen sie mit „Unbekannter SSH-Server“ ab — nicht mit „der Fingerabdruck hat sich geändert“, das bleibt einem Fingerabdruck vorbehalten, der vom gespeicherten abweicht.
- Um es zu lösen, öffne die Verbindung einmal von einem Bildschirm aus, der fragt — Verbindung testen im Profilformular — und vertraue dem Fingerabdruck, nachdem du ihn geprüft hast.
Den bekannten Fingerabdruck zurücksetzen
- Derzeit gibt es keine UI, um einen einzelnen Fingerabdruck zu löschen, aber du kannst die erneute Überprüfung erzwingen, indem du den Eintrag aus dem Schlüsselbund entfernst (Schlüsselbundverwaltung › Account caliope.ssh.hostkey.host:port) und dich erneut verbindest.
- Beim Neuinstallieren von Calíope gehen alle Fingerabdrücke verloren und du siehst bei der nächsten Verbindung den Dialog "Unbekannter Server".
Bewährte Praktiken
- Vergleiche den Fingerabdruck mit dem, den dir der Serveradministrator über einen sicheren Kanal geschickt hat (signierte Nachricht, HTTPS-Seite usw.).
- Wenn der rote Dialog ohne ersichtlichen Grund erscheint, brich ab und prüfe beim Administrator nach, bevor du akzeptierst.