macOS Tahoe 26.3 hat SSH Beschädigt: Änderungen der Groß-/Kleinschreibung, DSA-Schlüssel-Entfernung & Vollständiger Reparaturleitfaden
macOS Tahoe 26.3 hat die SSH-Benutzernamenverarbeitung stillschweigend auf Groß-/Kleinschreibung empfindlich geändert und ssh-dss-Schlüssel deaktiviert. Vollständiger Leitfaden zur Reparatur von SSH-Verbindungen, Konfigurationsaktualisierungen und Migration zu Ed25519-Schlüsseln.
Apple hat macOS Tahoe 26.3 am 11. Februar 2026 veröffentlicht, und für Tausende von Entwicklern und Systemadministratoren brachen SSH-Verbindungen sofort zusammen. Kein Warndialog. Kein Migrationsassistent. Kein Hinweis in den Release Notes. An einem Tag konnte man noch ssh administrator@yourserver verwenden, am nächsten Tag erhielt man Connection closed by 10.10.83.28 port 22. Wer sich auf DSA-Schlüssel zur Authentifizierung gegenüber Legacy-Infrastruktur verlassen hat, konnte diese überhaupt nicht mehr verwenden. Dieser Leitfaden erklärt genau, was sich geändert hat, warum es passiert ist und wie jeder betroffene Workflow repariert werden kann — von interaktiven Sitzungen bis hin zu automatisierten CI/CD-Pipelines.
Wichtigste Erkenntnisse
- macOS Tahoe 26.3 erzwingt Groß-/Kleinschreibung-empfindliche SSH-Benutzernamen. Die Eingabe von
administratorstattAdministratorführt zu einem sofortigen Verbindungsabbruch ohne Passworteingabeaufforderung. - ssh-dss (DSA)-Schlüssel wurden dauerhaft entfernt. OpenSSH 10.0, das mit Tahoe 26.3 gebündelt wird, hat die DSA-Unterstützung vollständig aus dem Kompilierungsschritt entfernt. Es gibt keine Konfigurationsoption, um sie wieder zu aktivieren.
- Post-Quantum-Schlüsselaustausch-Warnungen erscheinen jetzt, wenn eine Verbindung zu Servern hergestellt wird, die
mlkem768x25519-sha256odersntrup761x25519-sha512nicht unterstützen. - Ed25519 ist der empfohlene Schlüsseltyp für alle neuen SSH-Schlüssel. Es ist schneller, sicherer und erzeugt kleinere Signaturen als RSA.
- Jede
~/.ssh/config-Datei sollte überprüft werden auf Groß-/Kleinschreibungs-Fehler inUser-Direktiven und Verweise aufssh-dssinHostKeyAlgorithmsoderPubkeyAcceptedAlgorithms.
Inhaltsverzeichnis
- Was sich genau in macOS Tahoe 26.3 SSH geändert hat
- Diagnose von SSH-Verbindungsfehlern nach dem Update
- Die Änderung der Groß-/Kleinschreibung verstehen
- Die Entfernung des DSA-Schlüssels verstehen
- Post-Quantum-Schlüsselaustausch-Warnungen
- Schritt-für-Schritt-Lösung: Groß-/Kleinschreibungsprobleme
- Schritt-für-Schritt-Lösung: Migration von DSA zu Ed25519
- Vollständiger SSH-Konfigurationsprüfungsleitfaden
- SSH-Agent-Änderungen und Keychain-Integration
- Auswirkungen auf CI/CD-Pipelines und Automatisierung
- Auswirkungen auf Remote-Entwicklungsworkflows
- Workarounds für Legacy-Infrastruktur
- SSH-Sicherheitsbest Practices für 2026
- Häufig Gestellte Fragen
- Fazit
Was sich genau in macOS Tahoe 26.3 SSH geändert hat
macOS Tahoe 26.3 wird mit OpenSSH 10.0 geliefert, das drei bahnbrechende Änderungen einführt, die tägliche SSH-Workflows beeinflussen. Apple hat keine dieser Änderungen in den benutzerorientierten Release Notes hervorgehoben und überließ es den Entwicklern, sie durch fehlgeschlagene Verbindungen zu entdecken.
Änderung 1: Groß-/Kleinschreibung-empfindliches Benutzernamen-Matching
Vor Tahoe 26.3 war der SSH-Client auf macOS bei der Groß-/Kleinschreibung von Benutzernamen nachsichtig. Man konnte sich mit ssh administrator@server, ssh Administrator@server oder sogar ssh ADMINISTRATOR@server verbinden, und der Remote-Server würde den Benutzernamen korrekt auflösen, solange das zugrunde liegende Betriebssystem das Konto finden konnte. Nach dem Update erzwingt der SSH-Client eine strikte Groß-/Kleinschreibungs-Übereinstimmung, bevor die Verbindung vollständig hergestellt wird. Wenn die Groß-/Kleinschreibung nicht dem entspricht, was der Remote-Server erwartet, wird die Verbindung sofort geschlossen — bevor die Passwortauthentifizierung oder der Schlüsselaustausch abgeschlossen ist.
Änderung 2: Vollständige Entfernung von DSA (ssh-dss)
OpenSSH hat DSA seit Version 7.0 im Jahr 2015 schrittweise abgekündigt. Die Abkündigung folgte einem klaren Zeitplan:
| Datum | OpenSSH-Version | DSA-Status |
|---|---|---|
| 2015 | 7.0 | Standardmäßig deaktiviert, via Config reaktivierbar |
| 2024 | 9.x | Compile-time optional, standardmäßig aktiviert |
| Mitte 2024 | 9.x | Compile-time optional, standardmäßig deaktiviert |
| April 2025 | 10.0 | Vollständig aus der Codebasis entfernt |
| Februar 2026 | 10.0 (macOS Tahoe 26.3) | An alle macOS-Nutzer ausgeliefert |
Mit macOS Tahoe 26.3 gibt es keinen PubkeyAcceptedAlgorithms +ssh-dss-Workaround. Der Algorithmus ist nicht in der Binärdatei vorhanden. Jede SSH-Konfiguration, die auf ssh-dss verweist, erzeugt einen Bad key types-Fehler.
Änderung 3: Post-Quantum-Schlüsselaustausch-Warnungen
OpenSSH 10.0 hat eine Warnung eingeführt, die ausgelöst wird, wenn eine Verbindung zu Servern hergestellt wird, die keine Post-Quantum-Schlüsselaustausch-Algorithmen unterstützen. Die Warnung lautet:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Obwohl es sich um eine Warnung und keinen schwerwiegenden Fehler handelt, erzeugt sie Rauschen in der Terminal-Ausgabe und kann automatisierte Skripte beschädigen, die SSH-Ausgaben parsen.
Was sich nicht geändert hat
Es ist erwähnenswert, was gleich bleibt:
- RSA-Schlüssel funktionieren weiterhin (mit
rsa-sha2-256- undrsa-sha2-512-Signaturalgorithmen) - ECDSA-Schlüssel funktionieren weiterhin (obwohl Ed25519 bevorzugt wird)
- SSH-Port-Weiterleitung, Tunneling und ProxyJump funktionieren alle identisch
- Das Format der
~/.ssh/known_hosts-Datei hat sich nicht geändert
Wenn Sie neu bei SSH auf macOS sind oder eine Entwicklungsumgebung von Grund auf einrichten, deckt unser macOS Tahoe Entwickler-Setup-Leitfaden die vollständige Erstkonfiguration ab.
Diagnose von SSH-Verbindungsfehlern nach dem Update
Bevor Sie Änderungen vornehmen, müssen Sie feststellen, welches der drei Probleme Ihre Verbindungen beeinflusst. Die ausführliche SSH-Ausgabe ist Ihr primäres Diagnosewerkzeug.
Schritt 1: Ausführliche SSH-Ausgabe aktivieren
Führen Sie Ihren fehlgeschlagenen SSH-Befehl mit dreifachen Verbose-Flags aus, um die vollständige Handshake-Verhandlung zu sehen:
ssh -vvv user@hostname
Dies erzeugt eine detaillierte Ausgabe, die jede Phase der Verbindung zeigt. Suchen Sie nach diesen spezifischen Mustern:
Muster für Fehler bei der Groß-/Kleinschreibung:
debug1: Connecting to 10.10.83.28 [10.10.83.28] port 22.
debug1: Connection established.
debug1: identity file /Users/you/.ssh/id_ed25519 type 3
debug3: receive packet: type 7
Connection closed by 10.10.83.28 port 22
Der Schlüsselindikator ist, dass die Verbindung nach dem Aufbau, aber vor jedem Authentifizierungsversuch geschlossen wird. Es gibt keine "Permission denied"-Meldung — die Verbindung bricht einfach ab.
Muster für DSA-Schlüsselfehler:
/Users/you/.ssh/config line 15: Bad key types '+ssh-dss'.
oder:
Bad key types '+ssh-rsa,ssh-dss'
Dieser Fehler erscheint sofort, wenn der SSH-Client Ihre Konfigurationsdatei parst, bevor ein Verbindungsversuch unternommen wird.
Muster für Post-Quantum-Warnung:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Dies erscheint während des Schlüsselaustauschs, verhindert aber nicht, dass die Verbindung abgeschlossen wird.
Schritt 2: Die SSH-Client-Version überprüfen
Stellen Sie fest, welche OpenSSH-Version ausgeführt wird:
ssh -V
Erwartete Ausgabe auf macOS Tahoe 26.3:
OpenSSH_10.0p1, LibreSSL 3.3.6
Wenn Sie eine ältere Version sehen, haben Sie möglicherweise ein über Homebrew installiertes OpenSSH, das Priorität hat. Überprüfen Sie, welche Binärdatei verwendet wird:
which ssh
Das System-SSH befindet sich unter /usr/bin/ssh. Wenn Sie /opt/homebrew/bin/ssh oder /usr/local/bin/ssh sehen, verwenden Sie eine Homebrew-Version, die sich möglicherweise anders verhält.
Schritt 3: Mit expliziten Parametern testen
Isolieren Sie das Problem, indem Sie mit expliziter Benutzername-Groß-/Kleinschreibung und Schlüsseltyp testen:
# Groß-/Kleinschreibung testen - beide Varianten versuchen
ssh -vvv Administrator@hostname
ssh -vvv administrator@hostname
# Ohne Konfigurationsdatei-Interferenz testen
ssh -F /dev/null -vvv user@hostname
# Mit einem bestimmten Schlüssel testen
ssh -vvv -i ~/.ssh/id_ed25519 user@hostname

Schritt 4: SSH-Konfiguration auf Fehler überprüfen
Analysieren Sie Ihre Konfigurationsdatei, um Zeilen zu identifizieren, die auf veraltete Algorithmen verweisen:
# Auf ssh-dss-Referenzen prüfen
grep -n "ssh-dss" ~/.ssh/config
# Auf ssh-dss-Referenzen in der Systemkonfiguration prüfen
grep -n "ssh-dss" /etc/ssh/ssh_config
# Alle User-Direktiven zur Überprüfung der Groß-/Kleinschreibung
grep -n "User " ~/.ssh/config
Für ein tieferes Verständnis der Terminal-Nutzung auf macOS Tahoe verweisen wir auf unseren macOS Tahoe Terminal-Leitfaden.
Die Änderung der Groß-/Kleinschreibung verstehen
Warum diese Änderung Verbindungen unterbricht
Auf den meisten Unix-ähnlichen Systemen sind Benutzernamen auf Betriebssystemebene Groß-/Kleinschreibung-empfindlich. Ein Benutzer namens Administrator ist technisch gesehen ein anderes Konto als administrator. Das SSH-Protokoll selbst (RFC 4252) gibt jedoch an, dass Benutzernamen "case-sensitive" sind, erkennt aber an, dass Server-Implementierungen dies unterschiedlich handhaben können.
Vor macOS Tahoe 26.3 war der macOS SSH-Client nachsichtig. Wenn man ssh administrator@server eingab, sendete der Client den Benutzernamen so wie er war, und viele SSH-Server (insbesondere solche auf Windows, macOS oder Netzwerk-Appliances) normalisierten die Groß-/Kleinschreibung während der Authentifizierung. Die Verbindung gelang, weil der Server die schwere Arbeit leistete, administrator dem Administrator-Konto zuzuordnen.
Mit OpenSSH 10.0 führt der SSH-Client auf macOS jetzt eine strengere Vor-Authentifizierungsprüfung durch. Wenn der Server eine frühe Protokollnachricht zurückgibt, die eine Groß-/Kleinschreibungs-Nichtübereinstimmung anzeigt, wird die Verbindung beendet, bevor die Authentifizierung fortgesetzt werden kann. Das bedeutet:
- Verbindungen zu Windows-Servern (die historisch die Groß-/Kleinschreibung normalisierten) können unterbrochen werden
- Verbindungen zu Netzwerk-Appliances (Router, Switches, NAS-Geräte), die Groß-/Kleinschreibung-unempfindliche Benutzernamen verwenden, können unterbrochen werden
- Verbindungen zu macOS-Servern, bei denen das Admin-Konto
Administrator(großes A) ist, aber Skripteadministrator(kleines a) verwenden, werden unterbrochen - Verbindungen zu Linux-Servern sind weniger wahrscheinlich betroffen, da Linux-Benutzernamen bereits Groß-/Kleinschreibung-empfindlich sind
Häufige Szenarien, die unterbrochen werden
Szenario 1: macOS-zu-macOS-Remote-Management
Viele Systemadministratoren verbinden sich mit Remote-Macs über:
ssh [email protected]
Aber das standardmäßige macOS-Admin-Konto wird als Administrator mit einem großen A erstellt. Dies funktionierte vor Tahoe 26.3 und schlägt danach fehl.
Szenario 2: Verwaltung von Netzwerk-Appliances
Die Verbindung zu Routern, Switches, Firewalls und NAS-Geräten verwendet häufig generische Benutzernamen:
ssh [email protected]
ssh [email protected]
Wenn das Gerät den Benutzernamen als Admin oder ROOT speichert, werden diese Verbindungen nun stillschweigend fehlschlagen.
Szenario 3: SSH-Konfigurationsaliase
Viele Entwickler haben SSH-Konfigurationseinträge mit falscher Groß-/Kleinschreibung, die zuvor funktionierten:
# ~/.ssh/config - dies kann jetzt unterbrochen werden
Host production
HostName prod.example.com
User deploy # Server erwartet "Deploy"
IdentityFile ~/.ssh/prod_key
Die Entfernung des DSA-Schlüssels verstehen
Das Sicherheitsargument gegen DSA
DSA (Digital Signature Algorithm), wie es in SSH implementiert ist, verwendet eine feste Schlüssellänge von 1024 Bit und SHA-1 für Hashing. Diese Kombination bietet etwa 80 Bit symmetrische Sicherheit — weit unter dem von modernen Sicherheitsstandards empfohlenen Minimum von 128 Bit.
Die spezifischen Schwächen von DSA-Schlüsseln:
| Eigenschaft | DSA (ssh-dss) | Ed25519 | RSA-4096 |
|---|---|---|---|
| Schlüsselgröße | 1024 Bit | 256 Bit | 4096 Bit |
| Hash-Algorithmus | SHA-1 | SHA-512 | SHA-256/512 |
| Sicherheitsstufe | ~80 Bit | ~128 Bit | ~128 Bit |
| Signaturgröße | 40 Bytes | 64 Bytes | 512 Bytes |
| Signiergeschwindigkeit | Langsam | Schnell | Moderat |
| Verifizierungsgeschwindigkeit | Langsam | Schnell | Moderat |
| Anfälligkeit für Bias | Hoch | Keine | Keine |
DSA ist besonders anfällig für Implementierungsfehler. Wenn der bei der Signierung verwendete Zufallszahlengenerator eine Verzerrung aufweist, kann der private Schlüssel aus einer kleinen Anzahl von Signaturen wiederhergestellt werden. Dies wurde bei realen Angriffen ausgenutzt.
Was "Entfernt" tatsächlich bedeutet
In früheren macOS-Versionen war DSA standardmäßig deaktiviert, konnte aber mit Konfigurationsoptionen wieder aktiviert werden:
# Dies funktionierte auf macOS Sequoia und früher
Host legacy-server
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedAlgorithms +ssh-dss
In macOS Tahoe 26.3 verursachen diese Konfigurationszeilen selbst Fehler, da die SSH-Binärdatei ssh-dss nicht mehr als gültigen Algorithmus-Identifier erkennt. Der Fehler lautet:
/Users/you/.ssh/config line 8: Bad key types '+ssh-dss'.
Das bedeutet:
- Sie können keine DSA-Schlüssel für die Authentifizierung verwenden (Public-Key-Anmeldung)
- Sie können keine DSA-Host-Keys von Servern akzeptieren
- Sie können nicht einmal
ssh-dssin Ihren Konfigurationsdateien referenzieren, ohne Fehler zu verursachen - Das
ssh-keygen-Tool kann keine DSA-Schlüssel mehr generieren
Überprüfen, ob Sie DSA-Schlüssel haben
Bevor Sie mit der Migration fortfahren, überprüfen Sie Ihre vorhandenen Schlüssel:
# Alle SSH-Schlüssel mit ihren Typen auflisten
for key in ~/.ssh/*.pub; do
echo "=== $key ==="
ssh-keygen -l -f "$key"
done
Beispielausgabe:
=== /Users/you/.ssh/id_dsa.pub ===
1024 SHA256:abc123... you@mac (DSA) # Dieser Schlüssel muss ersetzt werden
=== /Users/you/.ssh/id_ed25519.pub ===
256 SHA256:xyz789... you@mac (ED25519) # Dieser Schlüssel ist in Ordnung
=== /Users/you/.ssh/id_rsa.pub ===
3072 SHA256:def456... you@mac (RSA) # Dieser Schlüssel ist in Ordnung
Jeder als (DSA) identifizierte Schlüssel muss ersetzt werden. Wenn Sie einen finden, löschen Sie ihn noch nicht — Sie benötigen ihn, um zu identifizieren, welche Server ihn autorisiert haben.
Post-Quantum-Schlüsselaustausch-Warnungen
Was die Warnung bedeutet
OpenSSH 10.0 hat Post-Quantum-Schlüsselaustausch mit dem ML-KEM-Algorithmus (früher CRYSTALS-Kyber) eingeführt, der mit X25519 hybridisiert ist. Der Standard-Schlüsselaustausch-Algorithmus ist jetzt mlkem768x25519-sha256, mit sntrup761x25519-sha512 als Fallback.
Bei der Verbindung zu einem Server, der keinen dieser Algorithmen unterstützt, zeigt OpenSSH an:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Ein "Jetzt speichern, später entschlüsseln"-Angriff bedeutet, dass ein Angreifer Ihren verschlüsselten SSH-Traffic heute aufzeichnen und in der Zukunft entschlüsseln könnte, wenn Quantencomputer in der Lage sind, klassische Schlüsselaustausch-Algorithmen zu brechen.
Wann Sie diese Warnung sehen werden
- Bei der Verbindung zu Servern, die OpenSSH 8.x oder früher ausführen
- Bei der Verbindung zu Netzwerk-Appliances mit eingebetteten SSH-Implementierungen
- Bei der Verbindung zu Cloud-Instanzen mit älteren SSH-Daemon-Versionen
- Bei der Verbindung zu GitHub, GitLab oder Bitbucket (können PQ-Algorithmen noch nicht unterstützen)
Die Warnung unterdrücken
Wenn Sie das Risiko verstehen und die Warnung unterdrücken möchten, fügen Sie dies zu Ihrer ~/.ssh/config hinzu:
# Post-Quantum-Warnungen global unterdrücken
Host *
WarnWeakCrypto no
Oder nur für bestimmte Hosts:
Host legacy-server
HostName 192.168.1.100
WarnWeakCrypto no
Die ideale Lösung ist es, Ihre Server auf OpenSSH 9.0 oder höher zu aktualisieren, das sntrup761x25519-sha512 unterstützt, oder OpenSSH 9.9+, das das neuere mlkem768x25519-sha256 unterstützt.
Schritt-für-Schritt-Lösung: Groß-/Kleinschreibungsprobleme
Lösung 1: Die korrekte Benutzername-Groß-/Kleinschreibung ermitteln
Stellen Sie zunächst den genauen Benutzernamen auf dem Remote-System fest. Die Methode hängt vom Remote-Betriebssystem ab:
Für Remote Linux/macOS-Server:
# Wenn Sie noch über Konsole, physischen Zugang oder einen anderen SSH-Client anmelden können
grep "your_username" /etc/passwd
# Oder den id-Befehl verwenden
id
# Beispielausgabe: uid=501(Administrator) gid=20(staff) groups=...
Für Remote Windows-Server (OpenSSH):
# In PowerShell auf der Remote-Maschine
whoami
# Ausgabe: DOMAIN\Administrator
Für Netzwerk-Appliances:
Überprüfen Sie die Web-Verwaltungsschnittstelle oder Dokumentation des Geräts für das genaue Benutzernamenformat. Häufige Muster:
- Cisco IOS: typischerweise Kleinbuchstaben (
admin) - Juniper: typischerweise Kleinbuchstaben (
root) - Synology NAS: Groß-/Kleinschreibung wie erstellt
- QNAP NAS: Groß-/Kleinschreibung wie erstellt
Lösung 2: Ihre SSH-Konfigurationsdatei aktualisieren
Öffnen Sie Ihre SSH-Konfiguration und korrigieren Sie alle User-Direktiven:
# Die Konfigurationsdatei öffnen
nano ~/.ssh/config
Vorher (fehlerhaft):
Host production
HostName prod.example.com
User administrator
IdentityFile ~/.ssh/prod_key
Host nas
HostName nas.local
User admin
Port 22
Nachher (korrigiert):
Host production
HostName prod.example.com
User Administrator
IdentityFile ~/.ssh/prod_key
Host nas
HostName nas.local
User Admin
Port 22
Lösung 3: Shell-Aliase und Skripte aktualisieren
SSH-Befehle in Ihrer Shell-Konfiguration suchen:
# Bash-Aliase überprüfen
grep -n "ssh " ~/.bashrc ~/.bash_profile 2>/dev/null
# Zsh-Aliase überprüfen
grep -n "ssh " ~/.zshrc ~/.zprofile 2>/dev/null
# SSH-Befehle in benutzerdefinierten Skripten suchen
grep -rn "ssh " ~/scripts/ ~/bin/ 2>/dev/null
Aktualisieren Sie alle hardcodierten Benutzernamen, um die korrekte Groß-/Kleinschreibung zu verwenden.
Lösung 4: Umgebungsvariablen aktualisieren
Einige Tools verwenden Umgebungsvariablen für SSH-Benutzernamen:
# Auf SSH-bezogene Umgebungsvariablen prüfen
env | grep -i ssh
env | grep -i user
# Häufig zu prüfende Variablen
echo $DEPLOY_USER
echo $SSH_USER
echo $REMOTE_USER
Lösung 5: Die Korrektur verifizieren
Nach dem Vornehmen von Änderungen jede Verbindung verifizieren:
# Mit ausführlicher Ausgabe testen
ssh -v production
# Erwartet: erfolgreiche Authentifizierung
# debug1: Authentication succeeded (publickey).
Schritt-für-Schritt-Lösung: Migration von DSA zu Ed25519
Dieser Abschnitt führt durch den vollständigen Prozess des Ersetzens von DSA-Schlüsseln durch Ed25519-Schlüssel. Wenn Sie Hintergrundwissen zu Terminal-Befehlen benötigen, deckt unser Mac Terminal-Meister-Leitfaden alle Grundlagen ab.

Phase 1: Ihre DSA-Schlüssel inventarisieren
Bevor Sie neue Schlüssel generieren, dokumentieren Sie, wo Ihre DSA-Schlüssel verwendet werden:
# Schritt 1: Alle DSA-Schlüssel auf Ihrem System finden
find ~/.ssh -name "*.pub" -exec grep -l "ssh-dss" {} \;
# Schritt 2: Für jeden DSA-Schlüssel prüfen, welche Server ihn autorisieren
# Den Fingerabdruck des öffentlichen Schlüssels notieren
ssh-keygen -l -f ~/.ssh/id_dsa.pub
# Schritt 3: DSA-Host-Keys in known_hosts prüfen
grep "ssh-dss" ~/.ssh/known_hosts | awk '{print $1}'
Eine Migrations-Checkliste erstellen:
# Eine Migrations-Tracking-Datei erstellen
cat > ~/ssh_migration_checklist.txt << 'EOF'
SSH DSA-Schlüsselmigrations-Checkliste
===============================
Datum: $(date)
Gefundene DSA-Schlüssel:
- [ ] ~/.ssh/id_dsa -> Verwendet für: _______________
- [ ] ~/.ssh/id_dsa.pub -> Autorisiert auf: _______________
Server mit DSA-Host-Keys:
- [ ] server1.example.com
- [ ] 192.168.1.100
Automatisierung/Skripte, die DSA verwenden:
- [ ] deploy.sh
- [ ] backup-cron.sh
- [ ] CI/CD-Pipeline: _______________
EOF
Phase 2: Neue Ed25519-Schlüssel generieren
Ein neues Ed25519-Schlüsselpaar mit einem aussagekräftigen Kommentar generieren:
# Ed25519-Schlüssel mit beschreibendem Kommentar generieren
ssh-keygen -t ed25519 -C "yourname@macbook-2026-02" -f ~/.ssh/id_ed25519
# Sie werden nach einer Passphrase gefragt — VERWENDEN SIE EINE
# Eine Passphrase schützt Ihren privaten Schlüssel, wenn Ihr Rechner kompromittiert wird
Wenn Sie separate Schlüssel für verschiedene Zwecke benötigen (empfohlen für Sicherheitsisolierung):
# Schlüssel für Arbeitsserver
ssh-keygen -t ed25519 -C "work-servers-2026" -f ~/.ssh/id_ed25519_work
# Schlüssel für persönliche Projekte
ssh-keygen -t ed25519 -C "personal-2026" -f ~/.ssh/id_ed25519_personal
# Schlüssel für CI/CD-Automatisierung
ssh-keygen -t ed25519 -C "cicd-automation-2026" -f ~/.ssh/id_ed25519_cicd
Die generierten Schlüssel verifizieren:
# Den neuen Schlüssel überprüfen
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
# Erwartete Ausgabe:
# 256 SHA256:abcdef123456... yourname@macbook-2026-02 (ED25519)
Phase 3: Neue Schlüssel auf Servern bereitstellen
Für jeden Server, der zuvor Ihren DSA-Schlüssel verwendete, den neuen Ed25519-Public-Key bereitstellen:
Methode 1: ssh-copy-id verwenden (wenn Sie sich noch authentifizieren können)
Wenn Sie eine andere funktionierende Authentifizierungsmethode haben (Passwort, anderer Schlüssel):
# Den neuen Schlüssel mit Passwort-Authentifizierung bereitstellen
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
# Oder einen funktionierenden Schlüssel für die Authentifizierung während der Bereitstellung angeben
ssh-copy-id -i ~/.ssh/id_ed25519.pub -o "IdentityFile=~/.ssh/id_rsa" user@server
Methode 2: Manuelle Bereitstellung (wenn ssh-copy-id nicht verfügbar ist)
# Den öffentlichen Schlüsselinhalt kopieren
cat ~/.ssh/id_ed25519.pub | pbcopy
# Mit einer beliebigen funktionierenden Methode auf den Server SSHen
ssh user@server
# Auf dem Remote-Server den Schlüssel hinzufügen
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "IHREN_ÖFFENTLICHEN_SCHLÜSSEL_HIER_EINFÜGEN" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Methode 3: Für Server, auf die Sie nicht per SSH zugreifen können
Wenn der DSA-Schlüssel Ihre einzige Authentifizierungsmethode war und nicht mehr funktioniert:
- Die Web-Verwaltungskonsole des Servers verwenden (falls verfügbar)
- Über physische Konsole oder IPMI/iLO/iDRAC zugreifen
- Einen Jump-Host verwenden, der noch Zugang hat
- Den Server-Administrator kontaktieren
Phase 4: SSH-Konfiguration aktualisieren
DSA-Schlüsselreferenzen in Ihrer SSH-Konfiguration ersetzen:
# Vorher
Host old-server
HostName legacy.example.com
User admin
IdentityFile ~/.ssh/id_dsa
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedAlgorithms +ssh-dss
# Nachher
Host old-server
HostName legacy.example.com
User Admin
IdentityFile ~/.ssh/id_ed25519_work
Phase 5: Bekannte Hosts bereinigen
Veraltete DSA-Host-Key-Einträge entfernen:
# Server mit DSA-Host-Keys in known_hosts finden
grep "ssh-dss" ~/.ssh/known_hosts
# Bestimmte Host-Einträge entfernen (der Host-Key wird bei der nächsten Verbindung neu akzeptiert)
ssh-keygen -R hostname_or_ip
# Oder alle DSA-Einträge auf einmal entfernen
# Zuerst die Datei sichern
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.backup.$(date +%Y%m%d)
# Dann DSA-Einträge entfernen
grep -v "ssh-dss" ~/.ssh/known_hosts > ~/.ssh/known_hosts.tmp
mv ~/.ssh/known_hosts.tmp ~/.ssh/known_hosts
Phase 6: Alles verifizieren
Jede Server-Verbindung testen:
# Verbindungen mit ausführlicher Ausgabe testen
ssh -v old-server
# Verifizieren, dass der richtige Schlüssel angeboten wird
# Suchen nach: debug1: Offering public key: /Users/you/.ssh/id_ed25519_work ED25519
# Einen vollständigen Konnektivitätstest für alle konfigurierten Hosts durchführen
for host in $(grep "^Host " ~/.ssh/config | awk '{print $2}' | grep -v '\*'); do
echo "Teste: $host"
ssh -o ConnectTimeout=5 -o BatchMode=yes "$host" echo "OK" 2>&1
echo "---"
done
Phase 7: Den DSA-Schlüssel außer Dienst stellen
Sobald alle Server migriert und verifiziert sind:
# Alte DSA-Schlüssel archivieren (nicht sofort löschen)
mkdir -p ~/.ssh/deprecated
mv ~/.ssh/id_dsa ~/.ssh/deprecated/id_dsa.retired.$(date +%Y%m%d)
mv ~/.ssh/id_dsa.pub ~/.ssh/deprecated/id_dsa.pub.retired.$(date +%Y%m%d)
chmod 400 ~/.ssh/deprecated/id_dsa.retired.*
Bewahren Sie die archivierten Schlüssel mindestens 90 Tage lang auf, falls Sie einen übersehenen Server entdecken.
Vollständiger SSH-Konfigurationsprüfungsleitfaden
Nach dem Beheben einzelner Probleme eine vollständige Überprüfung Ihrer SSH-Konfiguration durchführen. Dies ist besonders wichtig, wenn Sie SSH auf macOS seit Jahren verwenden und Konfigurationseinträge über mehrere macOS-Upgrades hinweg angesammelt haben.
Audit-Schritt 1: Auf veraltete Algorithmen prüfen
# Auf JEGLICHE veraltete Algorithmus-Referenzen prüfen
echo "=== ~/.ssh/config überprüfen ==="
grep -n -E "(ssh-dss|ssh-dsa|diffie-hellman-group1-sha1|diffie-hellman-group14-sha1|hmac-sha1-96|hmac-md5)" ~/.ssh/config 2>/dev/null
echo ""
echo "=== /etc/ssh/ssh_config überprüfen ==="
grep -n -E "(ssh-dss|ssh-dsa|diffie-hellman-group1-sha1)" /etc/ssh/ssh_config 2>/dev/null
echo ""
echo "=== /etc/ssh/ssh_config.d/ überprüfen ==="
grep -rn -E "(ssh-dss|ssh-dsa)" /etc/ssh/ssh_config.d/ 2>/dev/null
Audit-Schritt 2: Konfigurationssyntax validieren
# SSH-Konfigurationssyntax ohne Verbindung testen
ssh -G test-host 2>&1 | head -5
# Bei Fehlern erscheinen diese als:
# /Users/you/.ssh/config line X: Bad key types '...'
Audit-Schritt 3: Alle User-Direktiven überprüfen
# Alle User-Direktiven und die Hosts, auf die sie zutreffen, extrahieren
awk '/^Host /{host=$2} /User /{print host, $0}' ~/.ssh/config
Die Ausgabe überprüfen und die Groß-/Kleinschreibung jedes Benutzernamens verifizieren.
Audit-Schritt 4: Dateiberechtigungen prüfen
SSH ist streng bei Dateiberechtigungen. Falsche Berechtigungen können zu stillen Fehlern führen:
# SSH-Verzeichnisberechtigungen überprüfen und korrigieren
echo "=== Verzeichnisberechtigungen ==="
ls -la ~/.ssh/
echo ""
echo "=== Erwartete Berechtigungen ==="
echo "~/.ssh/ -> drwx------ (700)"
echo "~/.ssh/config -> -rw------- (600)"
echo "~/.ssh/id_* -> -rw------- (600) für private Schlüssel"
echo "~/.ssh/*.pub -> -rw-r--r-- (644) für öffentliche Schlüssel"
echo "~/.ssh/authorized_keys -> -rw------- (600)"
echo "~/.ssh/known_hosts -> -rw-r--r-- (644)"
# Berechtigungen korrigieren, falls nötig
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config 2>/dev/null
chmod 600 ~/.ssh/id_* 2>/dev/null
chmod 644 ~/.ssh/*.pub 2>/dev/null
chmod 600 ~/.ssh/authorized_keys 2>/dev/null
Audit-Schritt 5: Empfohlene moderne SSH-Konfigurationsvorlage
Hier ist eine vollständige, moderne SSH-Konfigurationsvorlage, die mit macOS Tahoe 26.3 funktioniert:
# ~/.ssh/config
# Aktualisiert für macOS Tahoe 26.3 / OpenSSH 10.0
# Zuletzt geprüft: 2026-02-28
# ============================================
# Globale Standardwerte
# ============================================
Host *
# Standardmäßig Ed25519-Schlüssel verwenden
IdentityFile ~/.ssh/id_ed25519
# Nur explizit für jeden Host konfigurierte Schlüssel anbieten
IdentitiesOnly yes
# macOS Keychain-Integration
UseKeychain yes
AddKeysToAgent yes
# Moderne Schlüsselaustausch-Einstellungen
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256,[email protected]
# Verbindungsstabilität
ServerAliveInterval 60
ServerAliveCountMax 3
# Sicherheitshärtung
HashKnownHosts yes
StrictHostKeyChecking ask
# ============================================
# Arbeitsserver
# ============================================
Host prod-web
HostName prod-web.example.com
User Deploy
IdentityFile ~/.ssh/id_ed25519_work
Port 22
Host staging
HostName staging.example.com
User Deploy
IdentityFile ~/.ssh/id_ed25519_work
Port 22
# ============================================
# Persönliche Server
# ============================================
Host homelab
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_ed25519_personal
# ============================================
# Jump-Host-Konfiguration
# ============================================
Host internal-*
ProxyJump bastion.example.com
User admin
IdentityFile ~/.ssh/id_ed25519_work
Host bastion.example.com
User jump-user
IdentityFile ~/.ssh/id_ed25519_work
ForwardAgent no
SSH-Agent-Änderungen und Keychain-Integration
macOS Tahoe 26.3 bringt auch subtile Änderungen daran, wie der SSH-Agent mit dem macOS Keychain interagiert.
Keychain-Integration
Die macOS-spezifische UseKeychain-Direktive funktioniert in Tahoe 26.3 weiterhin, aber ihr Verhalten wurde verfeinert:
# Ihren neuen Ed25519-Schlüssel zum macOS Keychain hinzufügen
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
# Verifizieren, dass der Schlüssel hinzugefügt wurde
ssh-add -l
Wenn der Schlüssel erfolgreich hinzugefügt wurde, sehen Sie:
256 SHA256:abcdef123456... yourname@macbook-2026-02 (ED25519)
Persistentes Laden von Schlüsseln
Stellen Sie sicher, dass Ihre SSH-Konfiguration diese Direktiven enthält, um die Schlüsselpersistenz über Neustarts hinweg aufrechtzuerhalten:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
Ohne UseKeychain yes müssen Sie nach jedem Neustart ssh-add ausführen.
Den SSH-Agent überprüfen
# Prüfen, ob der Agent läuft
echo $SSH_AUTH_SOCK
# Geladene Schlüssel auflisten
ssh-add -l
# Falls keine Schlüssel geladen sind, sie hinzufügen
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Für weitere Details zu macOS-Sicherheitskonfigurationen lesen Sie unseren macOS Tahoe Sicherheits-Datenschutz-Leitfaden.
Auswirkungen auf CI/CD-Pipelines und Automatisierung
Die SSH-Änderungen in macOS Tahoe 26.3 haben erhebliche Auswirkungen auf automatisierte Workflows. Wenn Ihre CI/CD-Pipeline auf macOS-Runnern läuft (GitHub Actions, GitLab CI, Jenkins auf Mac), werden diese Änderungen Sie nach dem Upgrade des Runner-Betriebssystems betreffen.
GitHub Actions
Wenn Sie macos-latest- oder macos-15-Runner verwenden, wird die SSH-Binärdatei schließlich aktualisiert. Prüfen Sie Ihre Workflows jetzt:
# .github/workflows/deploy.yml
# VORHER (potenziell fehlerhaft)
- name: Deploy
run: |
ssh administrator@${{ secrets.DEPLOY_HOST }} "cd /app && git pull"
# NACHHER (korrigiert)
- name: Deploy
run: |
ssh Administrator@${{ secrets.DEPLOY_HOST }} "cd /app && git pull"
Überprüfen Sie Ihre Deployment-Secrets:
DEPLOY_USER— verifizieren, dass die Groß-/Kleinschreibung mit dem Remote-Konto übereinstimmtSSH_PRIVATE_KEY— verifizieren, dass es kein DSA-Schlüssel istKNOWN_HOSTS— verifizieren, dass keine DSA-Host-Key-Einträge vorhanden sind
GitLab CI
# .gitlab-ci.yml
deploy:
before_script:
# Schlüsseltyp vor dem Deployment prüfen
- ssh-keygen -l -f ~/.ssh/id_deploy
# Sicherstellen, dass es KEIN DSA ist
- |
if ssh-keygen -l -f ~/.ssh/id_deploy | grep -q "DSA"; then
echo "FEHLER: DSA-Schlüssel erkannt. Migration erforderlich."
exit 1
fi
script:
# Korrekte Groß-/Kleinschreibung für den Benutzernamen verwenden
- ssh -o StrictHostKeyChecking=no Deploy@$DEPLOY_HOST "deploy.sh"
Jenkins
Für Jenkins-Pipelines, die auf macOS-Agenten laufen:
pipeline {
agent { label 'macos' }
stages {
stage('Pre-flight SSH Check') {
steps {
sh '''
# SSH-Version verifizieren
ssh -V
# DSA-Schlüssel in Credentials prüfen
for key in ~/.ssh/*.pub; do
if ssh-keygen -l -f "$key" | grep -q "DSA"; then
echo "WARNUNG: DSA-Schlüssel gefunden: $key"
exit 1
fi
done
echo "SSH-Vorflug-Prüfung bestanden"
'''
}
}
}
}
Ansible Playbooks
Wenn Sie Ansible von einem macOS-Steuerknoten aus ausführen:
# ansible.cfg
[defaults]
# Korrekte SSH-Binärdatei sicherstellen
ssh_executable = /usr/bin/ssh
# Bestimmte SSH-Argumente erzwingen
[ssh_connection]
ssh_args = -o IdentitiesOnly=yes -o IdentityFile=~/.ssh/id_ed25519_ansible
Überprüfen Sie die Groß-/Kleinschreibung der Benutzernamen in Ihrem Ansible-Inventar:
# inventory.ini
# VORHER
[webservers]
web1.example.com ansible_user=administrator
# NACHHER
[webservers]
web1.example.com ansible_user=Administrator
Automatisierte Backup-Skripte
Überprüfen Sie alle Cron-Jobs oder launchd-Tasks, die SSH verwenden:
# Alle Cron-Jobs mit SSH-Referenzen finden
crontab -l 2>/dev/null | grep -i ssh
# launchd-Plists mit SSH-Referenzen finden
grep -rl "ssh" ~/Library/LaunchAgents/ /Library/LaunchAgents/ /Library/LaunchDaemons/ 2>/dev/null
# Rsync-Backup-Skripte prüfen (rsync verwendet SSH standardmäßig)
grep -rn "rsync.*@" ~/scripts/ ~/bin/ 2>/dev/null
Auswirkungen auf Remote-Entwicklungsworkflows
VS Code Remote SSH
Die Remote SSH-Erweiterung von Visual Studio Code speichert Verbindungskonfigurationen, die möglicherweise betroffen sind:
# VS Code SSH-Konfigurationsort
cat ~/Library/Application\ Support/Code/User/settings.json | grep -A5 "remote.SSH"
# VS Code-SSH-Konfigurationsreferenzen prüfen
grep -n "ssh" ~/Library/Application\ Support/Code/User/settings.json 2>/dev/null
Aktualisieren Sie Ihre VS Code-SSH-Ziele, um die korrekte Benutzername-Groß-/Kleinschreibung und Nicht-DSA-Schlüssel zu verwenden.
JetBrains Gateway / Remote-Entwicklung
JetBrains-IDEs speichern SSH-Konfigurationen separat:
# JetBrains-SSH-Konfigurationen prüfen
find ~/Library/Application\ Support/JetBrains -name "*.xml" -exec grep -l "ssh" {} \; 2>/dev/null
tmux und persistente Sitzungen
Wenn Sie tmux oder screen über SSH verwenden, müssen Ihre Reconnect-Skripte aktualisiert werden:
# Häufiger tmux-Reconnect-Alias - Benutzername-Groß-/Kleinschreibung prüfen
alias tm='ssh -t Administrator@server "tmux attach || tmux new"'
Für eine umfassende Entwicklerumgebungs-Einrichtung lesen Sie unseren macOS Tahoe Entwickler-Ultimativen-Leitfaden.
Workarounds für Legacy-Infrastruktur
Einige Umgebungen können nicht sofort aktualisiert werden. Netzwerk-Appliances, eingebettete Systeme und Legacy-Server könnten jahrelang DSA benötigen. Hier sind praktische Workarounds, geordnet von am meisten bis am wenigsten empfohlen.
Workaround 1: Einen Jump-Host verwenden (Empfohlen)
Einen Linux-Bastion-Host einrichten, der noch DSA unterstützt, und ihn als Proxy verwenden:
# ~/.ssh/config
Host legacy-device
HostName 192.168.1.1
User admin
ProxyJump bastion
Host bastion
HostName bastion.example.com
User jump
IdentityFile ~/.ssh/id_ed25519
Der Bastion-Host führt ein älteres OpenSSH (oder eines, das mit DSA-Unterstützung kompiliert wurde) aus und handelt die DSA-Verhandlung mit dem Legacy-Gerät aus. Ihr Mac muss sich nur mit Ed25519 beim Bastion authentifizieren.
Workaround 2: Einen Docker-Container verwenden
Einen älteren OpenSSH-Client innerhalb eines Docker-Containers ausführen:
# Ein Dockerfile für Legacy-SSH erstellen
cat > ~/legacy-ssh/Dockerfile << 'EOF'
FROM alpine:3.18
RUN apk add --no-cache openssh-client
ENTRYPOINT ["ssh"]
EOF
# Bauen
docker build -t legacy-ssh ~/legacy-ssh/
# Verwenden, um sich mit Legacy-Geräten zu verbinden
docker run --rm -it \
-v ~/.ssh:/root/.ssh:ro \
legacy-ssh \
-o HostKeyAlgorithms=+ssh-dss \
-o PubkeyAcceptedKeyTypes=+ssh-dss \
admin@legacy-device
Einen Shell-Alias für Bequemlichkeit erstellen:
# Zu ~/.zshrc hinzufügen
alias legacy-ssh='docker run --rm -it -v ~/.ssh:/root/.ssh:ro legacy-ssh'
# Verwendung
legacy-ssh -o HostKeyAlgorithms=+ssh-dss admin@legacy-device
Workaround 3: Älteres OpenSSH über Homebrew installieren
Sie können OpenSSH 9.7p1 (die letzte Version mit DSA-Unterstützung) aus den Quellen kompilieren:
# Abhängigkeiten installieren
brew install openssl@3
# OpenSSH 9.7p1-Quelle herunterladen
curl -O https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
tar xzf openssh-9.7p1.tar.gz
cd openssh-9.7p1
# Mit DSA-Unterstützung und benutzerdefiniertem Präfix konfigurieren
./configure \
--prefix=$HOME/openssh97 \
--with-ssl-dir=$(brew --prefix openssl@3)
# Bauen und installieren
make -j$(sysctl -n hw.ncpu)
make install
# Die ältere SSH-Binärdatei verwenden
~/openssh97/bin/ssh -o HostKeyAlgorithms=+ssh-dss admin@legacy-device
Einen Alias für Legacy-Verbindungen erstellen:
# Zu ~/.zshrc hinzufügen
alias ssh-legacy='~/openssh97/bin/ssh -o HostKeyAlgorithms=+ssh-dss -o PubkeyAcceptedKeyTypes=+ssh-dss'
# Verwendung
ssh-legacy admin@old-router
Workaround 4: Eine Linux-Virtuelle-Maschine verwenden
Wenn Sie UTM, Parallels oder VMware Fusion verwenden:
- Eine leichtgewichtige Linux-VM (Alpine oder Ubuntu Server) einrichten
- Von Ihrem Mac per SSH zur VM verbinden (mit Ed25519)
- Von der VM per SSH zum Legacy-Gerät verbinden (mit DSA)
Dies bietet vollständige Isolation und erfordert keine Änderung Ihrer macOS-SSH-Installation.
Langfristig: Geräteaustausch planen
Wenn Sie auf DSA angewiesen sind, weil Ihre Netzwerk-Appliances keine modernen Algorithmen unterstützen, ist das ein klares Signal, dass diese Geräte aus sicherheitstechnischer Sicht ihr Lebensende erreicht haben. Planen Sie einen Austauschtimeline:
- Router/Switches: Die meisten Enterprise-Anbieter unterstützen Ed25519 seit 2018
- NAS-Geräte: Synology, QNAP und TrueNAS unterstützen alle Ed25519
- Legacy-Server: Wenn Sie OpenSSH älter als 6.5 ausführen, muss das gesamte System aktualisiert werden
SSH-Sicherheitsbest Practices für 2026
Mit den macOS Tahoe 26.3-Änderungen als Katalysator ist jetzt ein guter Zeitpunkt, umfassende SSH-Sicherheitsverbesserungen zu implementieren.
Best Practices für die Schlüsselverwaltung
1. Separate Schlüssel für separate Rollen verwenden:
# Arbeitsinfrastruktur
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C "work-2026"
# Persönliche Projekte
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal -C "personal-2026"
# CI/CD und Automatisierung
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_automation -C "automation-2026"
# Git-Hosting (GitHub, GitLab)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_git -C "git-2026"
2. Immer eine Passphrase verwenden:
Eine Passphrase verschlüsselt Ihren privaten Schlüssel im Ruhezustand. Wenn Ihr Rechner kompromittiert wird, kann der Angreifer Ihre SSH-Schlüssel nicht ohne die Passphrase verwenden. In Kombination mit der macOS Keychain-Integration müssen Sie die Passphrase nur einmal eingeben.
# Wenn bei der Schlüsselgenerierung aufgefordert:
Enter passphrase (empty for no passphrase): [eine starke Passphrase eingeben]
Enter same passphrase again: [bestätigen]
3. Schlüssel jährlich rotieren:
Schließen Sie das Jahr in Ihre Schlüssel-Kommentare ein, damit Sie wissen, wann sie generiert wurden:
ssh-keygen -t ed25519 -C "you@company-2026-Q1" -f ~/.ssh/id_ed25519_work_2026
Wenn das Jahr wechselt, neue Schlüssel generieren, deployen und alte außer Dienst stellen.
4. Korrekte Dateiberechtigungen setzen:
# Private Schlüssel: nur Eigentümer-Lesezugriff
chmod 400 ~/.ssh/id_ed25519*
chmod 600 ~/.ssh/id_ed25519*.pub
# Eigentlich können öffentliche Schlüssel von jedem gelesen werden
chmod 644 ~/.ssh/id_ed25519*.pub
# Das SSH-Verzeichnis selbst
chmod 700 ~/.ssh
# Konfigurationsdatei
chmod 600 ~/.ssh/config
Server-seitige Härtung
Wenn Sie SSH-Server verwalten, nutzen Sie diese Gelegenheit zur Härtung:
# /etc/ssh/sshd_config empfohlene Einstellungen
# Passwort-Authentifizierung deaktivieren (nur Schlüssel verwenden)
PasswordAuthentication no
# Root-Anmeldung deaktivieren
PermitRootLogin no
# Nur bestimmte Benutzer erlauben
AllowUsers deploy admin
# Modernen Schlüsselaustausch verwenden
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256
# Moderne Host-Key-Algorithmen verwenden
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
# Moderne Ciphers verwenden
Ciphers [email protected],[email protected],[email protected]
# Moderne MACs verwenden
MACs [email protected],[email protected]
# Ratenbegrenzung
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
Nach der Änderung von sshd_config immer vor dem Trennen der Verbindung testen:
# Die Konfiguration validieren
sudo sshd -t
# Wenn keine Fehler, sshd neu starten
sudo systemctl restart sshd
# WICHTIG: Halten Sie Ihre aktuelle Sitzung offen und testen Sie mit einer NEUEN Verbindung
# bevor Sie die vorhandene schließen
Überwachung und Alarme
Überwachung für SSH-Authentifizierungsereignisse einrichten:
# auth.log auf fehlgeschlagene Versuche überwachen (Linux-Server)
tail -f /var/log/auth.log | grep "sshd"
# macOS-Systemprotokoll auf SSH-Ereignisse überwachen
log stream --predicate 'process == "sshd"' --level info
Fehlerbehebung häufiger Fehler
Fehler: "Connection closed by X.X.X.X port 22"
Ursache: Groß-/Kleinschreibungs-Fehler beim Benutzernamen.
Lösung:
# Den richtigen Benutzernamen ermitteln
ssh -vvv user@host 2>&1 | grep "debug1: Sending"
# Die entgegengesetzte Groß-/Kleinschreibung versuchen
ssh Administrator@host # wenn 'administrator' fehlgeschlagen ist
ssh administrator@host # wenn 'Administrator' fehlgeschlagen ist
Fehler: "Bad key types '+ssh-dss'"
Ursache: Die SSH-Konfiguration verweist auf den entfernten DSA-Algorithmus.
Lösung:
# Die problematische Zeile finden und bearbeiten
grep -n "ssh-dss" ~/.ssh/config
# Die Algorithmus-Referenz entfernen oder ersetzen
# Vorher: HostKeyAlgorithms +ssh-dss
# Nachher: (die gesamte Zeile entfernen oder durch moderne Algorithmen ersetzen)
Fehler: "Bad key types '+ssh-rsa,ssh-dss'"
Ursache: Die SSH-Konfiguration hat eine zusammengesetzte Algorithmusliste einschließlich DSA.
Lösung:
# Vorher
HostKeyAlgorithms +ssh-rsa,ssh-dss
PubkeyAcceptedAlgorithms +ssh-rsa,ssh-dss
# Nachher (ssh-dss entfernen, ssh-rsa für Legacy-RSA behalten, falls nötig)
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Hinweis: ssh-rsa (mit SHA-1-Signaturen) ist ebenfalls veraltet. Wenn Sie RSA verwenden müssen, nutzen Sie rsa-sha2-256 oder rsa-sha2-512:
HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256
PubkeyAcceptedAlgorithms rsa-sha2-512,rsa-sha2-256
Fehler: "No matching host key type found"
Ursache: Der Remote-Server bietet nur DSA-Host-Keys an.
Lösung: Dies erfordert Maßnahmen auf der Server-Seite. Neue Host-Keys auf dem Server generieren:
# Auf dem Remote-Server (wenn Sie Konsolenzugang haben)
sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
sudo systemctl restart sshd
Wenn Sie den Server nicht aktualisieren können, verwenden Sie die oben beschriebenen Jump-Host- oder Docker-Workarounds.
Fehler: "WARNING: connection is not using a post-quantum key exchange algorithm"
Ursache: Der Remote-Server unterstützt keinen Post-Quantum-Schlüsselaustausch.
Lösung:
# Für einen bestimmten Host unterdrücken
# Zu ~/.ssh/config hinzufügen:
Host old-server
WarnWeakCrypto no
# Oder global unterdrücken (nicht empfohlen)
Host *
WarnWeakCrypto no
Fehler: "Permission denied (publickey)"
Ursache: Nach der Schlüsselmigration ist der neue Schlüssel auf dem Server nicht autorisiert.
Lösung:
# Prüfen, welcher Schlüssel angeboten wird
ssh -v user@host 2>&1 | grep "Offering public key"
# Den richtigen Schlüssel deployen
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
Fehler: "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"
Ursache: Nach dem Entfernen von DSA-Host-Key-Einträgen aus known_hosts bietet der Server einen anderen Host-Key-Typ an.
Lösung:
# Den alten Host-Key-Eintrag entfernen
ssh-keygen -R hostname
# Erneut verbinden und den neuen Host-Key akzeptieren
ssh user@hostname
# Sie werden aufgefordert, den Fingerabdruck des neuen Host-Keys zu verifizieren
Den breiteren Kontext verstehen
Die SSH-Änderungen in macOS Tahoe 26.3 sind Teil eines größeren branchenweiten Trends. Das Verständnis dieses Kontexts hilft Ihnen, sich auf zukünftige Änderungen vorzubereiten, anstatt auf jede zu reagieren.
OpenSSH-Versions-Zeitlinie
| Version | Datum | Wichtige Änderungen |
|---|---|---|
| 7.0 | 2015 | DSA standardmäßig deaktiviert |
| 8.2 | 2020 | SHA-1-Signaturen für RSA veraltet |
| 8.8 | 2022 | SHA-1-RSA-Signaturen standardmäßig deaktiviert |
| 9.0 | 2022 | Post-Quantum-KEx (sntrup761) standardmäßig aktiviert |
| 9.9 | 2024 | ML-KEM Post-Quantum-Unterstützung hinzugefügt |
| 10.0 | 2025 | DSA vollständig entfernt, ML-KEM als Standard |
macOS hat diesen Versionen historisch um 6-12 Monate nachgehinkt, was erklärt, warum die DSA-Entfernung macOS-Benutzer Anfang 2026 trifft, obwohl sie seit April 2025 in OpenSSH 10.0 ist.
Was als Nächstes zu erwarten ist
Basierend auf der OpenSSH-Entwicklungs-Roadmap:
- SHA-1-RSA-Signaturen (
ssh-rsa) werden wahrscheinlich vollständig in OpenSSH 11.x entfernt - ECDSA mit NIST-Kurven könnte zugunsten von Ed25519 veraltet werden
- Post-Quantum-Signaturen (nicht nur Schlüsselaustausch) werden hinzugefügt
- Zertifikat-basierte Authentifizierung wird zunehmend gegenüber rohen öffentlichen Schlüsseln gefördert
Jetzt vorbereiten:
- Sicherstellen, dass alle Schlüssel Ed25519 sind
- Zu
rsa-sha2-256/512wechseln, wenn RSA verwendet werden muss - Post-Quantum-Schlüsselaustausch mit Ihren Servern testen
- SSH-Zertifikatsinfrastruktur für Ihre Organisation evaluieren
Für weitere Details zu den Änderungen im breiteren macOS Tahoe 26.3-Update lesen Sie unseren macOS Tahoe 26.3 Release-Leitfaden.
Schnellreferenz: Benötigte Befehle
Hier ist eine konsolidierte Referenz jedes in diesem Leitfaden erwähnten Befehls, nach Aufgaben organisiert:
Diagnose
# SSH-Version prüfen
ssh -V
# Ausführlicher Verbindungstest
ssh -vvv user@host
# Prüfen, welche SSH-Binärdatei läuft
which ssh
# Ohne Konfigurationsdatei testen
ssh -F /dev/null user@host
# Aktuelle Schlüsseltypen prüfen
for key in ~/.ssh/*.pub; do
echo "=== $key ==="
ssh-keygen -l -f "$key"
done
Schlüsselgenerierung
# Ed25519-Schlüssel generieren (empfohlen)
ssh-keygen -t ed25519 -C "description-YYYY" -f ~/.ssh/id_ed25519
# RSA-Schlüssel generieren (wenn Ed25519 vom Ziel nicht unterstützt wird)
ssh-keygen -t rsa -b 4096 -C "description-YYYY" -f ~/.ssh/id_rsa
Schlüsseldeployment
# Schlüssel auf Remote-Server deployen
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
# Schlüssel zum macOS Keychain hinzufügen
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Konfigurationsaudit
# DSA-Referenzen in der Konfiguration finden
grep -n "ssh-dss" ~/.ssh/config /etc/ssh/ssh_config
# Alle User-Direktiven finden
grep -n "User " ~/.ssh/config
# Konfigurationssyntax validieren
ssh -G test-host
# Berechtigungen korrigieren
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 400 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub
Bereinigung
# Alten Host-Key entfernen
ssh-keygen -R hostname
# Alle DSA-Einträge aus known_hosts entfernen
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak
grep -v "ssh-dss" ~/.ssh/known_hosts > ~/.ssh/known_hosts.tmp
mv ~/.ssh/known_hosts.tmp ~/.ssh/known_hosts
Häufig Gestellte Fragen
Kann ich OpenSSH auf macOS Tahoe 26.3 downgraden, um die DSA-Unterstützung wiederherzustellen?
Sie können die System-OpenSSH-Binärdatei auf macOS aufgrund des System Integrity Protection (SIP) nicht ersetzen. Sie können jedoch eine ältere Version über Homebrew installieren oder aus den Quellen an einem benutzerdefinierten Ort kompilieren. Das System-ssh unter /usr/bin/ssh wird immer die OpenSSH 10.0-Version sein, die mit Tahoe 26.3 geliefert wurde. Detaillierte Anweisungen zum Bauen von OpenSSH 9.7p1 aus den Quellen finden Sie im Abschnitt "Workarounds für Legacy-Infrastruktur".
Ist die Änderung der Benutzername-Groß-/Kleinschreibung dauerhaft oder ein Bug?
Basierend auf den OpenSSH 10.0-Release-Notes und der Richtung des Projekts scheint dies ein absichtliches Verhalten zu sein, das sich an der SSH-Protokollspezifikation (RFC 4252) ausrichtet, die Benutzernamen als Groß-/Kleinschreibung-empfindlich definiert. Apple hat sich nicht dazu geäußert, ob dies ein Bug ist, und es gibt keinen Hinweis darauf, dass es rückgängig gemacht wird. Sie sollten dies als dauerhaftes Verhalten behandeln und Ihre Konfigurationen entsprechend aktualisieren.
Werden meine RSA-Schlüssel auch aufhören zu funktionieren?
RSA-Schlüssel mit SHA-2-Signaturen (rsa-sha2-256 und rsa-sha2-512) funktionieren weiterhin und werden auf absehbare Zeit unterstützt. RSA-Schlüssel mit SHA-1-Signaturen (ssh-rsa) sind jedoch seit OpenSSH 8.8 standardmäßig deaktiviert und werden wahrscheinlich in einer zukünftigen Version vollständig entfernt. Wenn Sie RSA-Schlüssel verwenden, stellen Sie sicher, dass sie mindestens 3072 Bit haben und Ihre Server SHA-2-Signaturen akzeptieren. Für neue Schlüssel ist Ed25519 die bevorzugte Wahl.
Wie repariere ich SSH-Verbindungen von macOS zu Windows Server?
Die OpenSSH-Implementierung von Windows Server war historisch gesehen bei Benutzernamen nicht Groß-/Kleinschreibung-empfindlich. Nach dem macOS Tahoe 26.3-Update müssen Sie die genaue Groß-/Kleinschreibung verwenden, die Windows erkennt. Verwenden Sie für Domänenkonten DOMAIN\Username oder [email protected]. Überprüfen Sie für lokale Konten den Kontonamen in der Computerverwaltung. Aktualisieren Sie Ihre ~/.ssh/config entsprechend:
Host windows-server
HostName win.example.com
User DOMAIN\\AdminUser
IdentityFile ~/.ssh/id_ed25519
Betrifft das auch SFTP und SCP?
Ja. Sowohl sftp als auch scp verwenden dieselbe SSH-Client-Bibliothek und unterliegen derselben Groß-/Kleinschreibungs-Erzwingung und DSA-Entfernung. Jeder SFTP-Client (wie Cyberduck, Transmit oder FileZilla), der die System-SSH-Binärdatei verwendet, ist ebenfalls betroffen. GUI-SFTP-Clients, die ihre eigene SSH-Bibliothek bündeln (wie Cyberduck mit seinem eigenen libssh2-Build), sind möglicherweise nicht betroffen, aber das hängt von der spezifischen Anwendung ab.
Fazit
macOS Tahoe 26.3 hat SSH-Änderungen geliefert, die etablierte Workflows ohne angemessene Warnung gebrochen haben. Die Durchsetzung von Groß-/Kleinschreibung-empfindlichen Benutzernamen, die vollständige DSA-Entfernung und die Post-Quantum-Schlüsselaustausch-Warnungen erfordern jeweils Aufmerksamkeit, aber alle sind einfach zu beheben, sobald Sie verstehen, was sich geändert hat.
Die unmittelbaren Maßnahmen sind:
- Ihre
~/.ssh/configüberprüfen auf Groß-/Kleinschreibungs-Fehler inUser-Direktiven und allessh-dss-Referenzen entfernen - Ed25519-Schlüssel generieren, um verbleibende DSA-Schlüssel zu ersetzen
- Die neuen Schlüssel deployen auf alle Server in Ihrem Inventar
- Automatisierungsskripte und CI/CD-Pipelines aktualisieren mit korrekter Benutzername-Groß-/Kleinschreibung und Schlüsselpfaden
- Post-Quantum-Warnungen basierend auf Ihrer Sicherheitslage stummschalten oder beheben
Diese Änderungen, obwohl disruptiv, treiben das macOS-SSH-Ökosystem in Richtung stärkerer Sicherheitsstandards. Ed25519 ist schneller, sicherer und erzeugt kleinere Schlüssel als DSA. Groß-/Kleinschreibung-empfindliche Benutzernamen entsprechen der SSH-Protokollspezifikation. Post-Quantum-Schlüsselaustausch schützt vor zukünftigen Bedrohungen. Der Schmerz der Migration ist real, aber die Sicherheitsverbesserungen sind substanziell.
Wenn Sie eine neue Entwicklungsumgebung auf macOS Tahoe einrichten, beginnen Sie mit unserem macOS Tahoe Entwickler-Setup-Leitfaden, um alles von Anfang an korrekt zu konfigurieren. Für eine umfassendere Sicherheitskonfiguration deckt unser macOS Tahoe Sicherheits-Datenschutz-Leitfaden den vollständigen Sicherheitsstack über SSH hinaus ab.
