![在 WSL 中执行 .exe 在 Windows 本身中是可行的,但如果通过 SSH 进入则不行](https://linux22.com/image/1598524/%E5%9C%A8%20WSL%20%E4%B8%AD%E6%89%A7%E8%A1%8C%20.exe%20%E5%9C%A8%20Windows%20%E6%9C%AC%E8%BA%AB%E4%B8%AD%E6%98%AF%E5%8F%AF%E8%A1%8C%E7%9A%84%EF%BC%8C%E4%BD%86%E5%A6%82%E6%9E%9C%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9B%E5%85%A5%E5%88%99%E4%B8%8D%E8%A1%8C.png)
在 WSL/Ubuntu 中,我可以通过以下方式打开/运行可执行文件:
user@desktop: notepad.exe
这将打开记事本。但是,如果我从其他客户端(例如 iPad)通过 ssh 进入 WSL,则输入该命令会返回错误消息:
command not found
知道这是为什么吗?这是可以实现的吗?谢谢!
答案1
这是不可能的,因为记事本使用 Windows 显示服务器,但 ssh 客户端需要 X 服务器。
您可以安装类似 gedit 之类的支持 X Server 转发的程序来代替记事本。
然后你可以使用 ssh 进入服务器
ssh -Y user@host
答案2
在尝试运行程序之前尝试使用此命令
su <username> -
当我尝试使用 ssh 远程运行 powershell 或 cmd 时,我遇到了类似的问题。直接从其文件夹运行 powershell 只会导致会话挂起,无法取消。问题出在您的环境上。
答案3
我注意到,当我在 wsl 系统(主机)上设置 sshd 并使用客户端命令中的 ssh 命令从 Windows 10 系统(客户端)通过 ssh 进入它,然后尝试使用 访问主机命令时/mnt/c/Windows/System32/cmd.exe
,我的客户端冻结了。
但是,当我在客户端上启动 wsl 会话并从那里连接主机时,不会发生冻结,并且我可以访问主机命令。
因此看来,linux(ubuntu)版本的 openssh 可以工作,但 windows 版本则不行。
有趣的事实:如果按照上面描述的方式在主机上获取 cmd 访问权限并键入notepad.exe
,则记事本会在主机上使用 GUI 打开。
答案4
当你知道确切路径时,你可以用“命令”执行:
command /mnt/c/windows/system32/ipconfig.exe