Using a shell other than `cmd.exe`
Connect to a Windows machine and you land in cmd.exe by default. Bash,
PowerShell or your WSL distribution are all possible — but the choice is made
on the Windows machine, not in MLC Terminal.
That is not a missing feature; it is how SSH works. Which shell a session gets
is the SSH server's decision. No terminal program can override it — not PuTTY,
not the ssh in your command line, not this one.
The short version
On the Windows machine, in PowerShell as Administrator:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
-Name DefaultShell `
-Value "C:\Windows\System32\wsl.exe" `
-PropertyType String -Force
Restart-Service sshd
The next connection lands in WSL instead of cmd.exe. Nothing changes in MLC
Terminal.
Other shells
Same key, different path:
| Target | -Value |
|---|---|
| WSL (default 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 |
Back to cmd.exe |
delete the DefaultShell key |
When the Windows user is not the WSL user
The SSH server authenticates you as the Windows user. If you are alice on
Windows and mlc on Linux, you land in WSL as alice — and as root if that
Linux user does not exist.
The user can be passed in the same key:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
-Name DefaultShell `
-Value "C:\Windows\System32\wsl.exe -u mlc" `
-PropertyType String -Force
This then applies to every SSH connection to that machine, whoever logs in. Fine for a single-user box or a dedicated server; on a shared machine it is better to create WSL users that match the Windows accounts.
Checking that it worked
After connecting:
echo $SHELL
uname -a
If cmd.exe still answers, the usual causes are a service that was not
restarted — Restart-Service sshd — or a PowerShell without administrator
rights, in which case the key was never written.
What MLC Terminal makes of it
After the change, the host scan sees the far side as Linux: capabilities (tmux, Docker, SFTP) are then detected for WSL rather than for Windows. If the display still shows the old result, run the scan again from the host overview.