在 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