我有一台 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.exe
PowerShell 的位置正确。
如何让 shell 成为 PowerShell,以便ssh
进入 Windows 主机?
答案1
Subsystem
并非旨在更改您的默认 shell,恰恰相反 - 它定义了客户端必须明确请求的命令。(它实际上是服务器端别名。)
因此你找到的配置片段并不意味着改变您从常规获得的内容ssh
;它旨在允许本地 PowerShell 实例调用 SSH 客户端并在服务器上启动远程 PowerShell,而不必知道其路径(它需要指定的是子系统名称)。
具体来说,该-sshs
选项表示它适用于远程控制通过 SSH使用Enter-PSSession
或Invoke-Command
cmdlet,它们可以在 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