如何为 OpenSSH 而不是 cmd 配置 powershell

如何为 OpenSSH 而不是 cmd 配置 powershell

我有一台 Windows 10 Pro 机器,可以ssh作为 进入(OpenSSH Server 已安装/正在运行)cmd。我希望将 shell 设置为powershell.exe(不是 的默认设置cmd.exe)。

我尝试设置以下C:\ProgramData\ssh\sshd内容本文,然后是Restart-Service sshd,但这不起作用:

Subsystem   powershell  c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -sshs -NoLogo -NoProfile

这也行不通:

Subsystem   powershell  C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -sshs -NoLogo -NoProfile

我已确认C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exePowerShell 的位置正确。

如何让 shell 成为 PowerShell,以便ssh进入 Windows 主机?

答案1

Subsystem并非旨在更改您的默认 shell,恰恰相反 - 它定义了客户端必须明确请求的命令。(它实际上是服务器端别名。)

因此你找到的配置片段并不意味着改变您从常规获得的内容ssh;它旨在允许本地 PowerShell 实例调用 SSH 客户端并在服务器上启动远程 PowerShell,而不必知道其路径(它需要指定的是子系统名称)。

具体来说,该-sshs选项表示它适用于远程控制通过 SSH使用Enter-PSSessionInvoke-Commandcmdlet,它们可以在 PowerShell 7 中通过 SSH 运行。

PS> Enter-PSSession -HostName otherpc
[otherpc] PS>

-HostName选项使其使用 SSH,而-ComputerName选项使其使用 WinRM。)

(这在 PowerShell 5 中不起作用 - 它的 PSRemoting 支持只能运行通过 WinRM,但如果您想要 PowerShell,那么 WinRM 实际上也是 SSH 的一个不错的替代品。)


实际上,更改 Windows OpenSSH(微软官方版本)中的默认 shell 的方式完全不同 - 它是本页记录

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
                 -Name DefaultShell `
                 -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" `
                 -PropertyType String `
                 -Force

相关内容