SSH-Schlüssel verwalten
Einen Schlüssel importieren, prüfen und einem Server zuordnen – und genau wissen, was Hawser Ihnen dabei nicht abnimmt.
Schlüssel statt Passwort
Ein Passwort lässt sich erraten, wandert von Server zu Server und muss bei jeder Verbindung neu eingetippt werden. Ein SSH-Schlüssel besteht dagegen aus zwei Teilen: Der öffentliche Teil liegt auf dem Server, der private Teil verlässt Ihren Rechner nie. Der Server stellt eine Aufgabe, Ihr Rechner signiert sie – ein wiederverwendbares Geheimnis geht dabei nie über die Leitung.
- Sie können die Passwortanmeldung auf dem Server abschalten (
PasswordAuthentication no) und Brute-Force-Angriffen damit die Tür verschliessen. - Ein Schlüssel pro Zweck: Einen Zugang zu entziehen heisst dann nur, auf dem betroffenen Server eine Zeile aus
~/.ssh/authorized_keyszu löschen. - In Hawser liegen der Schlüssel und seine Passphrase im verschlüsselten Tresor – Sie tippen bei keiner Sitzung etwas nach.
Hawser verwaltet Schlüssel für die Protokolle SSH und SFTP. FTP und Telnet kennen keine Schlüsselanmeldung; dort gibt es nur ein Passwortfeld.
Die Ansicht « Clés »
Linke Seitenleiste, Symbol 🔑 « Clés » (Schlüssel). Die Kopfzeile der Ansicht zeigt « SSH Keys ». Ein Tastaturkürzel führt nicht direkt dorthin; wer lieber die Tastatur benutzt, nimmt ⌘K.
Jede Zeile zeigt den Namen des Schlüssels, nach erfolgreicher Prüfung ein grünes « ✓ verified » und darunter eine Metazeile der Form ssh-ed25519 · no passphrase · 2 uses. Der Zähler nennt die Zahl der Verbindungsprofile, die auf diesen Schlüssel verweisen – vor dem Löschen ist das der einzige Anhaltspunkt. Rechts: ✏️ zum Bearbeiten, 🗑️ zum Löschen.
Das Suchfeld in der oberen Leiste filtert die Liste beim Tippen, allerdings nur nach dem Namen. Typ, Kommentar und Fingerabdruck bleiben aussen vor. Enthält der Tresor keinen Schlüssel, zeigt die Ansicht « No SSH keys — Add a key to start using SSH/SFTP. »

Ein Schlüsselpaar erzeugen
Die Schaltfläche « ✨ Générer » (Erzeugen) sitzt in der oberen Leiste links neben « + Clé » (+ Schlüssel) und erscheint nur in der Schlüsselansicht der nativen App. Der Dialog « Générer une clé SSH » bietet genau drei Verfahren an.
| Eintrag in der Liste | Wann geeignet |
|---|---|
| Ed25519 — recommandé | Die Voreinstellung. Kurzer, schneller Schlüssel, den jeder Server ab OpenSSH 6.5 (2014) akzeptiert. |
| RSA 4096 bits | Für alte Server oder Netzwerkgeräte ohne Ed25519. Die Berechnung dauert mehrere Sekunden. |
| RSA 2048 bits (legacy) | Nur wenn eine äussere Vorgabe es verlangt. Sonst meiden. |
Die übrigen Felder heissen Nom (Name), Commentaire (Kommentar, optional), Passphrase (optional) und Confirmer la passphrase (Passphrase bestätigen). Der Kommentar wird in den Schlüssel geschrieben und erscheint am Ende der öffentlichen Zeile – tragen Sie dort etwas Wiedererkennbares ein, etwa julien@mac-mini. Weichen die beiden Passphrasenfelder voneinander ab, startet die Erzeugung nicht: « Les passphrases ne correspondent pas. » Gerechnet wird ausschliesslich lokal, nichts geht über das Netz.
Bis dahin: einen brauchbaren Schlüssel erzeugen
ssh-keygen -t ed25519 -C "julien@mac-mini" -f ~/.ssh/prod_deploy
Einzugeben im Terminal von macOS. Der Befehl legt ~/.ssh/prod_deploy (privater Teil) und ~/.ssh/prod_deploy.pub (öffentlicher Teil) an. Den privaten Teil importieren Sie anschliessend wie unten beschrieben in Hawser.
Einen Schlüssel importieren
- Ansicht « Clés » → blaue Schaltfläche « + Clé » oben rechts. Der Dialog « New SSH key » öffnet sich, der Cursor steht im Feld Name.
- Vergeben Sie einen Namen. Unter diesem Namen wählen Sie den Schlüssel später in den Verbindungsprofilen aus.
- Fügen Sie den vollständigen Inhalt der privaten Schlüsseldatei in das Feld « Clé privée (PEM) » (Privater Schlüssel) ein, einschliesslich der Zeilen
-----BEGIN…und-----END…. - Tragen Sie die Passphrase des Schlüssels ein, sofern er eine hat.
- Klicken Sie auf « 🧪 Validate ». Am Fuss des Dialogs muss grün « ✓ Clé ssh-ed25519 » erscheinen (oder der tatsächliche Typ).
- Klicken Sie auf « Save ». Die Meldung « Key added » bestätigt die Speicherung.
Es gibt keine Dateiauswahl: Importiert wird per Kopieren und Einfügen. Am sichersten geht das über die Zwischenablage statt über einen Texteditor, der die Zeilenumbrüche umschreiben kann.
pbcopy < ~/.ssh/prod_deploy
Derselbe Dialog lässt sich über ⌘K → « New SSH key » öffnen oder aus einem Verbindungsprofil heraus, Reiter « Authentication » → Schaltfläche « + New ». Im zweiten Fall ist der neu angelegte Schlüssel in der Liste des Profils bereits ausgewählt.
« Save » prüft den Schlüssel in jedem Fall erneut, auch wenn Sie « 🧪 Validate » schon angeklickt haben. Schlägt die Prüfung fehl, wird nichts gespeichert.
| Meldung | Ursache und Abhilfe |
|---|---|
| « ✗ Clé vide » | Das PEM-Feld ist leer. |
| « ✗ Passphrase incorrecte (la clé refuse de se déchiffrer). » | Der Schlüssel ist verschlüsselt, und die eingegebene Passphrase öffnet ihn nicht. |
| « ✗ parse: … » | Der Block lässt sich nicht dekodieren: kein OpenSSH-Format, abgeschnittenes PEM oder verlorene Zeilenumbrüche. |
| « ✗ Pas une clé OpenSSH (publique ou privée) reconnue. » | Der eingefügte Text ist überhaupt kein Schlüssel. |
| « Name required » / « Key required » | Eines der beiden Felder war beim Speichern leer. |
| « Invalid key/passphrase » | Die erneute Prüfung beim Speichern ist fehlgeschlagen; geschrieben wurde nichts. |
Öffentlichen Schlüssel ausbringen
Der Server braucht den öffentlichen Teil. Hawser zeigt ihn nirgends an und bietet keine Schaltfläche zum Kopieren; bei einem importierten Schlüssel enthält der Tresoreintrag nicht einmal einen öffentlichen Teil. Sie müssen ihn ausserhalb der App aus der privaten Datei ableiten.
ssh-keygen -y -f ~/.ssh/prod_deploy
Der Befehl gibt eine einzige Zeile aus: ssh-ed25519 AAAA… julien@mac-mini. Genau diese Zeile muss in die Datei ~/.ssh/authorized_keys des entfernten Kontos.
sshd übergeht ein ~/.ssh mit 777 oder ein für die Gruppe schreibbares authorized_keys kommentarlos. Prüfen Sie 700 auf dem Ordner und 600 auf der Datei.Schlüssel und Host verbinden
- Ansicht Connections → ✏️ auf der Karte des Hosts (oder « + New » für ein neues Profil).
- Reiter « Authentication » des Dialogs.
- Stellen Sie die Auswahl von « Password » auf « Clé SSH » (SSH-Schlüssel) um.
- Wählen Sie den Schlüssel in der Liste « Saved SSH key ». Geprüfte Schlüssel tragen dort ein ✓.
- « Save ». Danach zum Testen ⌨️ Shell oder 📁 SFTP auf der Karte.
Ein Profil im Modus « Clé SSH » ohne ausgewählten Schlüssel zu speichern, wird abgelehnt: « Select an SSH key ».
Jedes Profil trägt seinen eigenen Schlüssel, auch bei Zwischenstationen: Läuft der Host über einen Bastion-Host (Reiter « Advanced » → « Jump Host (bastion) »), meldet sich der Bastion mit dem Schlüssel seines Profils an und der Zielhost mit seinem eigenen. Die Kette ist auf vier Stufen begrenzt (« jump host chain too deep (limit 4) »).
| Fehler beim Verbinden | Was er bedeutet |
|---|---|
| « [Erreur] Clé SSH introuvable (vérifie l'host : authType=key sans keyId valide) » | Das Profil steht auf Schlüsselanmeldung, der verwiesene Schlüssel existiert aber nicht mehr – üblicherweise wurde er gelöscht. |
| « [Erreur] decode private key: … » | Der gespeicherte Inhalt lässt sich nicht als privater Schlüssel lesen: versehentlich ein öffentlicher Schlüssel eingefügt oder ein abgeschnittenes PEM. |
| « [Erreur] authentication failed » | Der Schlüssel ist in Ordnung, der Server weist ihn ab: Der öffentliche Teil fehlt in authorized_keys, die Dateirechte stimmen nicht, oder im Profil steht der falsche Benutzername. |
Diese Meldungen erscheinen rot im Terminal und zusätzlich als Mitteilung. Siehe auch Eine SSH-Sitzung öffnen.
Der SSH-Agent von macOS
Die Engine von Hawser kann sich beim SSH-Agenten des Systems anmelden: Sie verbindet sich mit dem Socket SSH_AUTH_SOCK, fragt die geladenen Identitäten ab und lässt dort signieren. So bleiben die Schlüssel ausserhalb des Tresors.
Der einzige Umweg führt über den JSON-Import: ⌘K → « Importer config OpenSSH (~/.ssh/config) » (OpenSSH-Konfiguration importieren) → Reiter « Full JSON ».
{
"configs": [
{
"id": "prod-01-agent",
"protocol": "ssh",
"name": "prod-01 (agent)",
"host": "10.0.0.12",
"port": 22,
"username": "julien",
"authType": "agent",
"keyId": "",
"initialPath": "."
}
]
}
Die Objekte landen unverändert im Tresor, ohne Formatprüfung. Kontrollieren Sie Ihr JSON vor dem Einfügen: Trägt authType einen Wert, den die Engine nicht kennt, fällt sie auf den Agent-Modus zurück – das ergibt einen stillen Versuch und ein unverständliches « authentication failed ». Die agentspezifischen Fehler lauten « SSH_AUTH_SOCK unavailable: … » (kein Agent antwortet) und « agent identities: … » (der Agent weigert sich, seine Identitäten aufzuzählen). Prüfen Sie zuerst ssh-add -l im Terminal.
IdentityFile-Zeilen aus ~/.ssh/config werden beim Import nicht übernommen; der Dialog sagt das selbst. Hosts aus einer OpenSSH-Konfigurationsdatei kommen samt und sonders mit Passwortanmeldung an und müssen von Hand umgestellt werden.Wo die Schlüssel liegen, und Touch ID
Hawser schreibt nie nach ~/.ssh. Das PEM und seine Passphrase liegen in Ihrer verschlüsselten .ivault-Datei, und jedes Speichern eines Schlüssels löst sofort einen Schreibvorgang auf die Platte aus – ein Fehlschlag meldet sich unmittelbar als Mitteilung. Hat sich der Tresor zwischenzeitlich gesperrt, scheitert das Speichern mit « no vault open »: entsperren und erneut versuchen. Siehe Was verschlüsselt wird.
Vor jedem Schreibvorgang legt Hawser eine verschlüsselte Kopie des Tresors unter ~/Library/Application Support/ch.ilygo.hawser/vault-backups/ ab. Ihre Schlüssel liegen also mehrfach auf der Platte – stets verschlüsselt, nie im Klartext.
Touch ID schützt nicht die einzelnen Schlüssel, sondern entsperrt den Tresor. Der Hauptschlüssel liegt im Schlüsselbund und wird nach der biometrischen Anmeldung freigegeben; ist der Tresor einmal offen, sind alle SSH-Schlüssel ohne weitere Nachfrage nutzbar. Eine SSH-Signatur durch die Secure Enclave gibt es nicht, ebenso wenig hardwaregebundene Schlüssel.

ssh_config mit Host, HostName, User und Port, ohne jede IdentityFile-Zeile. Den Reiter « Full JSON » gibt es nur beim Import. Einen gespeicherten Schlüssel zurückzulesen heisst, seinen Bearbeitungsdialog zu öffnen und den Feldinhalt herauszukopieren – und das gelingt nur bei einem Schlüssel ohne Passphrase.Ist der Tresor mit der Cloud gekoppelt, prüft Hawser beim Anlegen eines neuen Schlüssels zuerst das Kontingent des Abos und kann den Vorgang abweisen: « ⚠ Quota cloud atteint ». An den Server geht dabei nur ein Zähler, nie ein Inhalt. Siehe Tresore synchronisieren.
Umbenennen, ersetzen, löschen
Die Schaltfläche ✏️ einer Zeile öffnet den Dialog « Edit key », vorausgefüllt mit Name und Inhalt des Schlüssels.
Bei einem Schlüssel ohne Passphrase lässt sich alles ändern: Sie können den Namen anpassen und das PEM ersetzen. Beim Speichern wird der Schlüssel vollständig neu geprüft, und die Meldung « Key updated » bestätigt.
Einen Schlüssel ersetzen (Rotation)
Eine Rotationsfunktion gibt es nicht. Der Vorgang ist Handarbeit, und die Reihenfolge zählt: Ordnen Sie den neuen Schlüssel überall zu, bevor Sie den alten löschen.
- Erzeugen Sie das neue Paar ausserhalb von Hawser und tragen Sie seinen öffentlichen Teil auf jedem betroffenen Server in
~/.ssh/authorized_keysein, neben dem alten. - Importieren Sie den neuen privaten Schlüssel unter einem eigenen Namen in Hawser (« + Clé »).
- In jedem Profil, das den alten Schlüssel benutzt: ✏️ → Reiter « Authentication » → den neuen unter « Saved SSH key » auswählen → Save. Der Verwendungszähler in der Schlüsselansicht sagt Ihnen, wie viele Profile noch offen sind.
- Öffnen Sie auf jedem Server eine Sitzung zur Kontrolle.
- Löschen Sie den alten Schlüssel in Hawser und entfernen Sie danach seine Zeile aus
authorized_keysauf den Servern.
Löschen
Die rote Schaltfläche 🗑️ fragt nach – « Delete key », « Delete "<Name>" ? » –, entfernt den Schlüssel und schreibt den Tresor neu. Die Meldung « Deleted "<Name>" » bestätigt; scheitert das Schreiben (« Delete failed »), erscheint der Schlüssel wieder in der Liste.