You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Windows 10 PowerShell 7 SSH连接Win2019后保持PowerShell而非CMD

解决SSH连接Windows Server 2019自动跳转CMD的问题

我之前也碰到过一模一样的情况——明明两边都装了PowerShell 7,SSH连接后却自动切去CMD,核心原因是Windows的OpenSSH服务默认把CMD设为了远程登录的默认shell。这里给你几个实用的解决办法:

临时方案:连接时直接指定启动PowerShell 7

你可以在SSH命令里直接追加启动PowerShell 7的指令,强制远程会话打开PowerShell 7:

ssh someuser@189.0.5.7 -i ~/.ssh/key "pwsh.exe"

这样每次连接都会直接进入PowerShell 7会话,不用手动切换。

永久方案:修改远程服务器的OpenSSH默认shell

如果想让所有SSH连接默认都用PowerShell 7,在Windows Server 2019上按以下步骤操作:

  1. 先确认PowerShell 7的安装路径,通常是C:\Program Files\PowerShell\7\pwsh.exe(如果是便携版路径可能不同,自行核对)
  2. 打开管理员权限的PowerShell 7,执行命令修改注册表:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
  1. 重启OpenSSH服务让设置生效:
Restart-Service sshd

之后再用你的SSH命令连接,就会直接进入PowerShell 7会话了。

针对单个用户配置默认shell

如果只想让特定用户登录时用PowerShell 7,不影响其他用户,可以单独配置:

  1. 打开管理员PowerShell,执行:
New-Item -Path "HKLM:\SOFTWARE\OpenSSH\DefaultShell\Users\someuser" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH\DefaultShell\Users\someuser" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
  1. 同样重启sshd服务:
Restart-Service sshd

注意事项

  • 确保远程服务器上的PowerShell 7路径正确,路径含空格时要保留完整带引号的格式(上面的命令已经处理了这个问题)
  • 修改注册表和重启服务必须用管理员权限操作,别忘记以管理员身份打开PowerShell

内容的提问来源于stack exchange,提问作者George Murphy

火山引擎 最新活动