Назад | Перейти на главную страницу

Как я могу выключить Windows XP удаленно из Linux?

У меня Windows XP работает на виртуальных машинах, подключенных к моей локальной сети для тестирования. Тесты проводятся удаленно. Когда закончите, я хочу выключить их удаленно из Linux.

ETA: Обратите внимание, что в Windows установлена ​​XP Home, поэтому нет никаких политик безопасности / групповых политик.

Для систем Linux в той же настройке я делаю:

#> ssh root@linux-vm123 'shutdown -h now';

Для систем Windows я должен уметь:

#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U user%pwd

Но это дает мне следующую ошибку:

Could not connect to server xx.xx.xx.xx
The username or password was not correct.
Connection failed: NT_STATUS_LOGON_FAILURE

Пользователь является администратором, и для учетной записи установлен пароль. Нужно ли мне что-то настраивать в системе Windows?

ETA: Есть ли способ проверить только логин, т.е. е. без отправки команды выключения, для которой могут потребоваться другие привилегии или настройки?

Windows XP Home не разрешает вход в сеть, кроме как через гостевую учетную запись. Так что сначала вам нужно включить его.

Это дало мне новую ошибку, сообщающую мне, что "тип входа" не разрешен. Тип входа - «код 3», что, как я выяснил, означает «вход в сеть». Активация обмена файлами устранила это, но я не знаю почему.

Конечно, гостю не разрешено выключать компьютер, поэтому учетная запись должна быть добавлена ​​в группу администраторов (что, конечно, является серьезным нарушением любых правил безопасности, но помните, что это полностью локально, все под моим столом и оставаться там. ), введя в оболочке следующую команду:

net localgroup Administrators Guest /ADD

И затем, вы обнаружите, что для команды выключения RPC, похоже, требуется именованный канал winreg на целевом объекте, который, по-видимому, предоставляется службой удаленного реестра, которая недоступна в XP Home. Так что пока для меня нет удаленного выключения.

Следует отметить, что XP Home просто не предназначена для работы в управляемой профессиональной сети, но я выбираю системы для тестирования на предмет того, что я ожидаю от целевых машин, а не того, что я хочу использовать. Тем не менее, заметка в справочных страницах net / rpcclient была бы очень любезной ...

Почти готово. Не используйте обратную косую черту в командной строке bash.

#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U DOMAIN\\user%pwd
#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U MACHINENAME\\user%pwd

Это должно работать

Вы указываете имя домена или компьютера:

т.е. если машина находится в домене

#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U DOMAIN\user%pwd

или

#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U user@domain.com%pwd

или если машина находится в рабочей группе

#> net rpc SHUTDOWN -I xx.xx.xx.xx -f -U MACHINENAME\user%pwd

По моему опыту, есть две вещи, которые могут пойти не так. Первый и наиболее распространенный - разрешено ли удаленное выключение. В локальной политике безопасности (Пуск -> Панель управления -> Администрирование -> Локальная политика безопасности). Разверните Локальные политики и откройте Параметры безопасности. «Сетевой доступ: модель совместного использования и безопасности для локальных учетных записей» необходимо установить на «Классический».

Как сказано в другом ответе, требуется имя машины, даже если вы уже указали IP-адрес. Попробуйте использовать что-то вроде этого:

rpcclient --user='Administrator' -I x.x.x.x --command='shutdown' ComputerName

Глупым злым взломом было бы создание службы, прослушивающей выбранный вами порт, которая не делает ничего, кроме выполнения выключения (возможно, psshutdown из пакет PsTools если XP home не включает такую ​​команду). Любая попытка подключения к этому порту должна вызвать отключение, поэтому, конечно, вы начинаете раздражать себя, если кто-то, хотя бы порт, просканирует ваш тестовый блок ...

Немного более ориентированный на безопасность подход - сделать Windows более похожей на Linux и установить SSH-сервер (возможно, полномасштабный cygwin, возможно, один из пакетов только для SSH-сервера, которые я видел в t'internet)