3.6 KiB
SSH, Bash & rsync unter Windows (Git Bash / MINGW64)
Voraussetzungen
- Git for Windows installiert (enthält Git Bash mit MINGW64)
- Zielserver: Windows Server mit OpenSSH-Server
1. SSH-Key erstellen
ssh-keygen -t ed25519
Key-Dateien liegen danach unter C:\Users\<username>\.ssh\:
id_ed25519(privat, niemals weitergeben)id_ed25519.pub(öffentlich, wird auf Server kopiert)
2. SSH-Key auf Windows-Server einrichten
Warum ssh-copy-id allein nicht reicht
ssh-copy-id kopiert den Key nach ~/.ssh/authorized_keys auf dem Server. Windows OpenSSH ignoriert diese Datei für Benutzer in der Administratoren-Gruppe. Stattdessen muss der Key in eine zentrale Datei:
C:\ProgramData\ssh\administrators_authorized_keys
Schritt-für-Schritt
- Public Key anzeigen (lokal in Git Bash):
cat ~/.ssh/id_ed25519.pub
- Auf dem Server (PowerShell als Administrator):
# Key eintragen (Inhalt aus Schritt 1 einsetzen)
Add-Content C:\ProgramData\ssh\administrators_authorized_keys "ssh-ed25519 AAAA... user@host"
# Berechtigungen setzen (MUSS exakt stimmen!)
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "SYSTEM:(F)" /grant "BUILTIN\Administrators:(F)"
Wichtig: Stimmen die Berechtigungen nicht, ignoriert OpenSSH die Datei stillschweigend und fragt weiter nach dem Passwort.
- Testen (lokal):
ssh domadmin@krah-mgmt10.internal.lan echo ok
Wenn ok ohne Passwort erscheint, ist alles korrekt.
Alternative: Server so konfigurieren, dass ~/.ssh/authorized_keys auch für Admins gilt
In C:\ProgramData\ssh\sshd_config diese Zeilen auskommentieren:
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Danach SSH-Dienst neu starten:
Restart-Service sshd
3. rsync in Git Bash installieren
Git Bash enthält kein rsync. Die Binary muss manuell aus dem Git-for-Windows-SDK nachinstalliert werden.
Git Bash als Administrator öffnen
Notwendig, da Git unter C:\Program Files\Git\ installiert ist.
Binaries herunterladen
curl -L https://github.com/git-for-windows/git-sdk-64/raw/main/usr/bin/rsync.exe -o /usr/bin/rsync.execurl -L https://github.com/git-for-windows/git-sdk-64/raw/main/usr/bin/msys-xxhash-0.dll -o /usr/bin/msys-xxhash-0.dll
Prüfen
rsync --version
Hinweis: Falls weitere DLL-Fehler auftreten (
msys-*.dll), die fehlende DLL analog von derselben GitHub-Quelle herunterladen.
4. Bekannte Fallstricke
| Problem | Ursache | Lösung |
|---|---|---|
mux_client_request_session: read from master failed |
SSH-Multiplexing (ControlMaster) funktioniert nicht unter MINGW64 | Kein -S/-M/ControlPath in SSH-Befehlen verwenden |
| Passwort wird trotz Key verlangt | Admin-Keys werden unter Windows an anderem Ort erwartet | Key in administrators_authorized_keys eintragen (siehe Abschnitt 2) |
rsync: command not found |
Nicht in Git Bash enthalten | Manuell installieren (siehe Abschnitt 3) |
error while loading shared libraries: msys-xxhash-0.dll |
rsync braucht zusätzliche DLL | DLL separat herunterladen |
Permission denied beim Schreiben nach /usr/bin/ |
Git Bash ohne Admin-Rechte gestartet | Git Bash als Administrator öffnen |
$'\302\226curl': command not found |
Unsichtbare Unicode-Zeichen aus Copy-Paste | Befehl manuell eintippen statt einfügen |