У меня 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)