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.