Выполнение .exe в WSL работает в самой Windows, но не при подключении к ней по SSH

Выполнение .exe в WSL работает в самой Windows, но не при подключении к ней по SSH

В WSL/Ubuntu я мог открыть/запустить исполняемый файл следующим образом:

user@desktop: notepad.exe

Это откроет блокнот. Однако, если я подключусь по ssh к WSL с другого клиента, например с iPad, ввод этой команды вернет ошибку:

command not found

Есть идеи, почему так? Это что-то достижимое? Спасибо!

решение1

это невозможно, поскольку блокнот использует сервер отображения Windows, а клиенты SSH ожидают X-сервер.

вы можете установить что-то вроде gedit вместо блокнота, которое поддерживает переадресацию X-сервера.

затем вы можете подключиться к серверу по ssh, используя

ssh -Y user@host

решение2

Попробуйте использовать эту команду перед попыткой запустить программу

su <username> -

У меня была похожая проблема при попытке запустить powershell или cmd при использовании ssh удаленно. Запуск powershell напрямую из его папки просто приводил к зависанию сеанса без возможности его отмены. Проблема в вашей среде.

решение3

Я заметил, что когда я настраиваю sshd на системе wsl (хост) и подключаюсь к ней по ssh из системы Windows 10 (клиент), используя команду ssh в client-cmd, а затем пытаюсь получить доступ к host-cmd с помощью /mnt/c/Windows/System32/cmd.exe, мой клиент зависает.

Но когда я запускаю сеанс wsl на клиенте и подключаюсь оттуда к хосту, зависаний не происходит, и я могу получить доступ к host-cmd.

Похоже, что версия openssh для Linux (Ubuntu) работает, а версия для Windows — нет.

Интересный факт: если получить доступ к cmd на хосте, как описано выше, и ввести notepad.exe, на хосте откроется блокнот с графическим интерфейсом.

решение4

Когда вы знаете точный путь, вы можете выполнить команду «command»:

command /mnt/c/windows/system32/ipconfig.exe

Связанный контент