Задать вопрос
@The_Immortal

Удаленная безинтерактивная блокировка Windows 10 с Android?

Всех приветствую!

Необходимо блокировать рабочую станцию под управлением Windows 10 удаленно по сети с Android-устройства безинтерактивно (без вмешательства в работу пользователя). Казалось бы, ничего сложного, однако на деле решения найти не удалось.
Я вижу лишь два варианта подключения к Windows 10:
  • telnet
  • ssh

1. Telnet-сервер Windows 10 покинул. Я обнаружил тут пару бесплатных сторонних реализаций telnet-серверов:
- HK Telnet Server // глючит
- KpyM Telnet Server // не стартует как положено
Т.е. с telnet'ом пролёт.

2. Windows 10 имеет встроенный OpenSSH-сервер. Однако ни один SSH-клиент (не важно из под Windows он или из под Android) не может выполнить команду rundll32.exe user32.dll,LockWorkStation (как и tsdiscon) По каким-то причинам по SSH она не проходит.

Собственно, вопрос: как решить обозначенную задачку?

Спасибо!
  • Вопрос задан
  • 539 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 3
zkrvndm
@zkrvndm
Архитектор решений
Я могу ошибаться, но вроде бы SSH в Windows работает на виртуальном Linux, т. е. команды в него отдавать бесполезно. Как вариант, попробуйте настроить автозапуск всех бантиков с какой-то определенной папки, допустим каждые 10 секунд. Далее, при необходимости, просто перемешайте нужный батник в эту папку по SSH и он автоматом выполняется, после чего самоудаляется.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега SSH
software engineer
Поводу ssh-сервера, от чьего имени запущена служба?

Можно поставить веб-сервер, с простым CGI и выполнять команду при вызове конкретного урл.
Можно поставить слежение за каким-то каталогом через крон/службу расписанийи выполнять rundll... если в ней появился нужный файл. Файл создавать через ssh подключение.
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Однако ни один SSH-клиент ... не может выполнить команду rundll32.exe user32.dll,LockWorkStation

А он и не должен. Что встроенный sshd, что внешний ssh-сервер - они имитируют поведение стандартного линухового сервера и виндовые команды не выполняют. Выполняют только некий набор субкоманд, существующих в линухе. А Вам нужно найти аналог PsTools (PsExec) из комплекта sysinternals.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@The_Immortal Автор вопроса
Итак, резюмирую.

1. В рамках SSH блокировать Windows возможно с помощью утилиты tsdiscon с указанием локальной сессии tsdiscon console.
Несмотря на то, что SSH предоставляет полноценный доступ к консоли (cmd или PowerShell), выполнить вызов функции LockWorkStation посредством команды rundll32.exe user32.dll,LockWorkStation через встроенный в Windows 10 OpenSSH сервер не представляется возможным (по крайней мере посредством службы sshd), т.к. данная функция требует сессии рабочего стола, а SSH в данной сессии не стартует. До Windows 2003 (на Windows XP) функция отработает, поскольку там
the local desktop is running in session 0.
Т.е. до Висты данная команда выполняется под session 0 - в её рамках не было разделений между RDP, консолями, декстопами, службами. На текущий же момент session 0 является изолированной, неинтерактивной и предполагается для выполнение служб и системных процессов - в эту сессию, к сожалению, и попадает указанная выше команда (да и все команды выполненные через SSH, т.к. дочерний процесс у них служба sshd), я понимаю это так, но может неверно. Если что, вот первоисточник (там поднимался ровно такой же вопрос).
Вероятно, как-то можно запускать OpenSSH сервер интерактивно, но я не разобрался как это сделать, да и не комильфо как-то держать сервер не в рамках службы.

2. В рамках telnetLockWorkStation выполняется успешно, т.к. telnet работает с десктопной сессией. Но проблема в том, что адекватного telnet-сервера под Windows 10 я не обнаружил. Есть вероятность, что telnet-сервер некогда был в каких-то Technical Preview Windows 10. К примеру, тут пишут:
With build 9879 of Win 10 TP, Telnet Server is specifically removed
Т.е. до билда 9879 Win 10 TP telnet-сервер должен быть. Я нашел на просторах билд 9841 (<9879), но там telnet-сервера не обнаружил. Попытался также завести telnet-сервер с Windows 8.1, но там разные импорты п, функции не обнаруживаются - не взлетит такой порт, в общем.

3. Как посоветовали выше, вариант с расписанием. Т.е. необходимый скрипт (та же функция LockWorkStation) выполняется при наличии того или иного файла в определенном месте, появление которого можно инициализировать через тот же SSH.

4. Также из совета выше: развернуть веб-сервер с простым CGI и выполнять команду (ту же LockWorkStation) при вызове конкретного URL.

Всех искреннее благодарю!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект