Statt `cmd.exe` eine andere Shell
Wer sich auf einen Windows-Rechner verbindet, landet standardmässig in
cmd.exe. Bash, PowerShell oder die WSL-Distribution sind möglich — die
Entscheidung fällt aber auf dem Windows-Rechner, nicht in MLC Terminal.
Das ist keine fehlende Funktion, sondern wie SSH gebaut ist: Welche Shell eine
Sitzung bekommt, bestimmt der SSH-Server. Ein Terminalprogramm kann das nicht
überstimmen, und keines kann es — weder PuTTY noch das ssh in Ihrer
Kommandozeile.
Die kurze Fassung
Auf dem Windows-Rechner, PowerShell als Administrator:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
-Name DefaultShell `
-Value "C:\Windows\System32\wsl.exe" `
-PropertyType String -Force
Restart-Service sshd
Die nächste Verbindung landet in WSL statt in cmd.exe. In MLC Terminal ist
nichts zu ändern.
Andere Shells
Derselbe Schlüssel, ein anderer Pfad:
| Ziel | -Value |
|---|---|
| WSL (Standard-Distribution) | C:\Windows\System32\wsl.exe |
| PowerShell 5 | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
| PowerShell 7 | C:\Program Files\PowerShell\7\pwsh.exe |
| Git Bash | C:\Program Files\Git\bin\bash.exe |
Zurück zu cmd.exe |
Schlüssel DefaultShell löschen |
Wenn der Windows-Benutzer anders heisst als der WSL-Benutzer
Der SSH-Server meldet Sie als Windows-Benutzer an. Heissen Sie unter
Windows alice und unter Linux mlc, landen Sie in WSL als alice — und
falls es diesen Linux-Benutzer nicht gibt, als root.
Der Benutzer lässt sich im selben Schlüssel mitgeben:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
-Name DefaultShell `
-Value "C:\Windows\System32\wsl.exe -u mlc" `
-PropertyType String -Force
Das gilt dann für jede SSH-Verbindung auf diesen Rechner, unabhängig davon, wer sich anmeldet. Für einen Einzelplatz oder einen dedizierten Server in Ordnung; auf einer Maschine mit mehreren Benutzern besser die WSL-Benutzer so anlegen, dass sie zu den Windows-Konten passen.
Nachsehen, ob es gewirkt hat
Nach dem Verbinden:
echo $SHELL
uname -a
Meldet sich cmd.exe weiterhin, wurde meist der Dienst nicht neu gestartet —
Restart-Service sshd — oder PowerShell lief ohne Administratorrechte, und
der Schlüssel wurde gar nicht geschrieben.
Was MLC Terminal davon merkt
Nach der Umstellung erkennt der Host-Scan die Gegenstelle als Linux: Die Fähigkeiten (tmux, Docker, SFTP) werden dann für WSL ermittelt, nicht für Windows. Wenn die Anzeige noch das Alte zeigt, den Scan auf der Host-Übersicht einmal wiederholen.