Windows 11 Pro普通权限CMD无法访问System32\OpenSSH目录及ssh.exe,仅管理员权限CMD可用的问题咨询
先理清楚你的场景:
- 系统:Windows 11 Pro 21H2(内部版本22000.978)
- 已安装OpenSSH并添加到系统Path,但普通权限CMD下:
- 能通过
explorer .看到System32里的OpenSSH文件夹 - 执行
cd OpenSSH提示路径不存在,调用ssh也提示未找到
- 能通过
- 但管理员权限CMD下一切正常,
where ssh能正确返回C:\Windows\System32\OpenSSH\ssh.exe
问题根源:Windows文件系统重定向
这是典型的**文件系统重定向(File System Redirector)**导致的问题。Windows为了兼容32位程序,会对32位进程访问C:\Windows\System32的请求做自动重定向,把它指向C:\Windows\SysWOW64(专门存放32位系统文件的目录)。
而你的OpenSSH是64位版本,实际安装在64位专属的C:\Windows\System32目录里。普通用户默认打开的CMD如果是32位的,就会被重定向到SysWOW64,自然看不到真正的System32里的OpenSSH文件夹;而explorer.exe是64位程序,所以它能直接访问到真实的System32目录,这就是为什么资源管理器能看到但CMD不行的原因。管理员打开的CMD通常是64位的,所以不受重定向影响,能正常访问。
你可以在CMD里执行这条命令验证自己的CMD位数:
echo %PROCESSOR_ARCHITECTURE%
如果输出是x86,说明是32位CMD;输出AMD64则是64位CMD。
解决方案
这里给你几个实用的解决办法,按推荐程度排序:
1. 直接打开64位版本的CMD
不要用默认的快捷方式打开CMD,而是通过完整路径启动64位版本:
C:\Windows\System32\cmd.exe
普通用户打开这个64位CMD后,就能正常执行cd OpenSSH和调用ssh命令了,和管理员权限下的表现一致。
2. 用Sysnative别名访问64位目录(针对32位CMD)
如果你必须使用32位CMD,可以用Windows提供的Sysnative特殊别名来绕过重定向,直接访问64位的System32目录:
- 进入OpenSSH目录:
cd C:\Windows\Sysnative\OpenSSH - 直接调用ssh命令:
C:\Windows\Sysnative\OpenSSH\ssh.exe
3. 调整环境变量(可选)
把C:\Windows\Sysnative\OpenSSH添加到系统环境变量的Path中,这样32位CMD就能直接找到ssh.exe,无需每次都输入完整路径。不过这个方案不如前两个直接,除非你经常需要在32位CMD里使用ssh。
内容的提问来源于stack exchange,提问作者Thebluedragon




