我希望这是提出这个问题的正确地方,因为这有点像 Windows 问题。我的问题是:当我在 WSL 上有一个我想运行的 OpenGL 程序时,尝试使用 Xming“转发”(我认为)X11,我找不到我的 SSH.exe!
除此之外,我可以。
ssh.exe
在 Xming 选择资源管理器之外搜索时可见的图像ssh.exe
:
还有,where
不起作用?
PS C:\Windows\System32\OpenSSH> where .\ssh.exe
PS C:\Windows\System32\OpenSSH>
我曾是在 .exe 所在的目录中,但where
不知为何却找不到它。Xming 本身也找不到它,因为当我打开时C:\Windows\System32\
,OpenSSH 目录显然不存在!见屏幕截图。
尝试通过 Xming XLaunch 程序时 OpenSSH 目录不可用的图像:
我以前从未见过这种事情发生,所以我不知道这里可能具体与哪些设置相关。
我还尝试了其他一些方法:
- 尝试标记
\OpenSSH\
为非只读,但即使具有管理员权限也无法这样做。也许这是明智的。 - PuTTy 连接,这会导致另一个问题的错误。类似“预期与服务器进行密钥交换”。
- 将 SSH .exe 复制到几个不同的位置,但没有成功,因为 Xming 仍然找不到我的任何尝试。
我试过 vcXsrv,但也无法让它工作。我愿意听取建议,我的最终目标是尝试运行我在 WSL 上安装的 OpenGL 程序。我推测,由于 WSL 没有自己的窗口系统,我们必须以某种方式连接到 Windows?不完全理解这个过程。如果有更简单的方法,或者某种方法可以解决我描述的问题,请告诉我。
答案1
ssh.exe
位于 下,这C:\Windows\System32
是一个神奇的文件夹。对于 32 位和 64 位进程,它是不同的。对于 64 位进程,它映射到 (不可见) C:\Windows\Sysnative
,而对于 32 位进程,它映射到C:\Windows\SysWOW64
(可能不完全是这样,但足以让您了解)。大多数二进制文件都存在于 32 位和 64 位变体中。
但OpenSSH
仅存在于 64 位版本中(C:\Windows\Sysnative\OpenSSH
)。因此 32 位进程无法通过 来定位它PATH
,因为 包含C:\Windows\System32\OpenSSH
,而 对他们来说,这映射到不存在的C:\Windows\SysWOW64\OpenSSH
。
我假设您的 Xming 是 32 位,您的 PowerShell 实例也是如此。
您可以改用完整路径:
C:\Windows\Sysnative\OpenSSH\ssh.exe
答案2
where
您的命令不起作用的原因解释:where
在 PowerShell 中是该函数的别名Where-Object
,它可以找到 powershell 对象,不是文件。如果您想搜索文件,请使用where.exe
!
(我本来想将此写为评论,但我的声誉不够。)