Diese Seite beschreibt Calíope 1.5, die Version, die wir gerade bauen. Die 1.4 ist fertig und in der App-Review, und der Store liefert heute 1.3 auf dem Mac und 1.2 auf dem iPad. 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 MySQL hinter einem SSH-Bastion, ohne Port 3306 freizugeben.
Wo es zu finden ist: Seitenleiste › Profilformular › SSH-Tunnel
Ein SSH-Tunnel (auch Portweiterleitung genannt) ermöglicht es Calíope, mit einem MySQL-Server zu kommunizieren, der aus deinem Netzwerk nicht direkt erreichbar ist. Statt sich direkt mit dem MySQL-Host zu verbinden, öffnet Calíope zuerst eine SSH-Session zu einem Bastion-Server und legt über diese Session einen verschlüsselten Kanal zum internen MySQL 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 MySQL-Verbindung 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 MySQL-Ziel aus Sicht des Bastions, nicht aus Sicht deines Rechners. Wenn MySQL 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. Calíope speichert einen sicheren Zugriff auf die Datei (security-scoped bookmark), um sie bei späteren Starts lesen zu können, ohne sie erneut auswählen zu müssen.
⚠️ Wenn du die Schlüsseldatei verschiebst oder umbenennst, kann Calíope bei der nächsten Verbindung nicht mehr darauf zugreifen und zeigt den Fehler "Die SSH-Schlüsseldatei ist nicht mehr zugänglich". Öffne in dem Fall das Profil und wähle die Datei an ihrem neuen Ort 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 MySQL-Authentifizierung 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 MySQL-Host
4. Startet einen lokalen Proxy auf einem flüchtigen Port von 127.0.0.1
5. Verbindet MySQLKit 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 MySQL-Servers. Schlägt er fehl, gibt die Fehlermeldung an, in welchem Schritt das Problem aufgetreten ist (SSH-Authentifizierung, MySQL-Host nicht erreichbar, falsche MySQL-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
MySQL vom Bastion aus nicht erreichbar
Das Feld Host des Profils muss der MySQL-Host aus Sicht des Bastions sein. Probiere 127.0.0.1, wenn MySQL auf demselben Server 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 MySQL weist die Verbindung ab
Die MySQL-Anmeldedaten (Benutzer/Passwort) sind von den SSH-Daten unabhängig. Prüfe, ob der MySQL-Benutzer 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.
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.