1000++ способ запуска команд на удаленном компьютере
В наше время даже для собак придумали удаленное управление.
Возвращаясь к циклу «Конспект Админа», мне хотелось бы рассказать о вариантах запуска исполняемых программ на удаленных компьютерах. Эта статья будет интересна тем, у кого еще нет систем централизованного управления, но уже есть понимание утомительности ручного обхода рабочих станций и серверов. Либо тем, кому решения «под ключ» не интересны ввиду неспортивности.
В качестве того, зачем нужен такой запуск программ, можно привести недавнюю истерию с Петей\Не-Петей, когда все бросились проверять\отключать SMBv1 и загружать обновления. Да и провести инвентаризацию или установить срочный патч таким методом тоже можно.
Когда-то давно я устроился работать в организацию в период эпидемии Kido\Conficker. Наиболее простым способом выяснить, все ли хорошо в ИС компании, была славная утилита от Касперского под названием Kido Killer, которая проверяла наличие вируса и устраняла его. Запускать программу на доброй сотне машин руками было невесело, поэтому пришлось знакомиться с автоматизацией.
Если в операционных системах *nix для удаленного запуска, как правило, используется SSH, то у Windows способов запуска программ и скриптов воистину как песка в пустыне. Я разберу основные варианты, как общеизвестные, так и экзотические. Таких очевидных вещей как telnet-сервер касаться не буду, тем более Microsoft уже убрала его из современных ОС.
Способы старые, временем проверенные
Psexec
Пожалуй, это первое, что приходит на ум, когда идет речь об удаленном запуске программ. Утилита от Марка Руссиновича используется еще со времен Windows NT и до сих пор применяется. Помимо основной функции, можно использовать ее и как Runas, и для запуска программ в пользовательской сессии терминального сервера. Psexec также позволяет задавать ядра процессора, на которых будет запускаться программа, и ее приоритет в системе.
В качестве примера посмотрим, установлено ли обновление, закрывающее нашумевшую уязвимость SMB на списке компьютеров:
В файле computers.txt находится список компьютеров. Для запуска по всему домену можно использовать \\*. В файле \\server\share\log.txt будут появляться имена рабочих станций или серверов без обновления. Если в домене существуют компьютеры с *nix на борту или нет доступа к административному сетевому ресурсу Admin$ ― команда на этой машине не выполнится, но обработка продолжится. Чтобы скрипт не зависал при каждой попытке подключения, можно задать тайм-аут с помощью ключа -n.
Если компьютер выключен ― мы об этом не узнаем. Поэтому лучше предварительно проверять доступность машин или собирать в файле информацию об успешном или неудачном выполнении.
К минусам Psexec можно отнести то, что она из-за своего удобства и популярности часто используется вирусописателями. Поэтому антивирусные системы могут обнаруживать утилиту как опасность вида remote admin.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего Psexec. При необходимости логин и пароль можно задать явно или же использовать аккаунт SYSTEM.
Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ― реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.
Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:
Использовать список компьютеров также можно командой /node:»@computers.txt».
Еще при помощи WMI можно запускать программы – синтаксис предельно прост:
К сожалению, в отличие от Psexec, получить вывод в консоли не получится ― придется выводить результаты команды в файл.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего wmic. При необходимости логин и пароль можно задать явно.
Групповые политики и скрипты
Если предыдущие варианты не требовали доменной среды, то в этом случае потребуется домен. Поддерживаются скрипты при входе и выходе пользователя из системы, а также при ее включении и выключении. Поскольку каждый администратор Windows сталкивался с ними, я не буду подробно расписывать как ими пользоваться ― лишь напомню, где их искать.
Скрипты, выполняющиеся при старте и завершении системы.
Скрипты, выполняющиеся при входе и выходе пользователя из системы.
Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.
Назначенные задания
Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).
Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ― «Настройка ― Параметры панели управления ― Назначенные задания».
Создание нового назначенного задания.
Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».
Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ― например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.
Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:
В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.
Запускаем немедленную задачу только один раз.
При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ― Конфигурация Windows ― Файлы».
Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.
Через реестр
Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:
В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.
Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».
Теперь перейдем к новым инструментам.
Способы новые или куда же без PowerShell
PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.
Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:
Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.
После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.
Проверка возможности подключения.
Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:
Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.
Смотрим содержимое диска С удаленного компьютера.
Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.
Работаем в консоли удаленного компьютера.
Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.
Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.
В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?
Кстати, поделитесь вашими способами скрытого и не очень запуска программ на удаленных компьютерах. Ну, за исключением эксплойтов.
Источник
Способы удаленного доступа к компьютеру (более 40)
Удаленный доступ, дистанционное управление, сервер/клиент, удаленный рабочий стол
Есть много причин, по которым вы желаете получить удаленный доступ к компьютеру, и, к счастью, есть также множество способов сделать это. Crossloop — один из простейших (freeware), но для тех, кто хочет большего, существует еще множество вариантов. Этот список состоит из четырех основных разделов: VNC (Virtual Network Computing), NX, удаленный рабочий стол и кросс-платформенные сервера. Если эти термины ничего для вас не обозначают, вы можете сразу перейти к разделу «другие», где описаны более простые приложения. Итак, давайте начинать.
TeamViewer — Готовый сервис, позволяющий установить VNC-соединение с минимумом настроек. С сайта скачивается приложение, устанавливается, потом обмен кодами доступа и соединение идёт через третий сервер. Бесплатно для некоммерческого использования.
Ajax VNC — Клиентонезависимое решение (позволяет реализовать просмотр удаленного рабочего стола без клиента), реализованное на популярном в Интернете языке программирования.
Apple Remote Desktop — Apple рулит со своим удаленным рабочим столом с VNC-сервером, встроенным прямо в OS X.
Chicken of the VNC — Один из самых популярных клиентов VNC для OS X по лицензии GPL.
DirectVNC — UNIX клиент, использующий фреймбуфер через DirectFB.
FVNC — Превосходный VNC-клиент, написанный на Flash. Все верно, на Flash.
MetaVNC — Этот уникальный пакет клиент/сервер объединяет хост и удаленные рабочие столы в один (Windows или Линукс).
.NET VNC Viewer — C# просмотрщик, работающий на Windows и Windows Mobile/CE устройствами.
PowerVNC — Java-клиент с поддержкой SSH и SFTP.
RealVNC — Сервер/клиент от первоначальных VNC-разработчиков.
sVNC — Идеальный инструмент для удаленного предоставления помощи пользователям Mac, поскольку содержит практически любые требуемые настройки.
SymVNC — http://symvnc.sourceforge.net/ — Клиент для телефонов Symbian для подключения к компьютеру.
TightVNC — Популярный VNC сервер/клиент с красивым Java-апплетом.
TurboVNC — Комплект с большой поддержкой 3D-приложений.
UltraVNC — Получивший широкую известность клиент/сервер с поддержкой передачи файлов, видеодрайверами, чатом, и многим другим. К слову, лично я, задолго до составления этого списка, остановился на нем. Работает даже на диалапе. Неоднократно выручал, когда забывал выключить компьютер на работе или оставлял там нужные файлы.
UltraVnc SC (Single Click) — сервис для создания преднастроенных серверных приложений для последующего быстрого подключения к ожидающему UltraVNC — вьюверу.
Vine Server — OS X сервер с буфером обмена, сменой портов, и универсальным установщиком.
VncViewer for 8086 — Нашли старый IBM, работающий на FreeDOS или DOS? Пусть он работает с этим VNC клиентом.
VNCViewer для КПК — Клиент, как вы догадались, для пользователей карманных компьютеров.
x11vnc — В отличие от большинства других VNC серверов для UNIX и Linux, этот сервер позволяет обмениваться текущей сессией рабочего стола (вместо выделения отдельной сессии).
FreeNX — Сервер с открытым исходным кодом с использованием библиотек от NoMachine.
NoMachine NX Client — Бесплатный клиент для подключения к NX машинам.
NoMachine NX Free Edition — Бесплатная версия сервера для UNIX/Linux.
NoMachine NX Enterprise Desktop — Desktop сервер, который включает все, что и бесплатная версия, но с неограниченным количеством пользователей.
NoMachine NX Small Business Server — NX сервер с ориентацией на малый бизнес.
NoMachine NX Enterprise Server — NX сервер с неограниченным количеством пользователей и подключений.
NoMachine NX Advanced Server Subscription — Содержит все, что и Enterprise Server, а также мульти серверные возможности.
Протокол удаленного рабочего стола
CoRD — Клиент удаленного рабочего стола для пользователей Mac OS X.
grdestkop — Gnome оболочка для rdesktop приложений.
krdesktop — rdesktop интерфейс, написанный для KDE.
properJavaRDP — Кросс-платформенный Java клиент, основанный на rdesktop.
rdesktop — Очень мощный клиент командной строки для UNIX/Linux.
Remote Desktop — Официальный сервер Microsoft для XP Pro и Vista.
xrdp — Сервер и X-window сессия для входящих Windows клиентов.
Connection Manager — VNC, RDP и Telnet менеджер для UNIX/Linux дистрибутивов.
KDE Desktop Sharing — Официальный KDE VNC сервер пакет.
KDE Remote Desktop Connection — Официальный KDE клиент для VNC и RDP.
Kurd — Отличный rdesktop/vncviewer интерфейс для KDE.
mRemote — Управление VNC и RDP соединениями Windows с удобным интерфейсом.
RDPMan — Небольшая утилита для управления RDP, VNC и Telnet соединениями для Windows.
CrossLoop — Простая в использовании утилита удаленного доступа к файлам с многоязычным интерфейсом.
GoToMyPC — Очень популярная программа удаленного доступа за 25 долларов в месяц (на западе естественно).
LogMeIn — ПО удаленного доступа с бесплатным и профессиональным вариантом ($12.95/мес) с передачей файлов, удаленной печатью и многим другим.
Unyte — Nice remote desktop server with a Java applet viewer and IM integration. Unyte — Хороший сервер удаленного рабочего стола с клиентом на Java апплете и IM интеграцией.
про teamviewer забыли
В качестве альтернативы Вы можете использовать Mikogo — полностью бесплатное, кросплатформенное, легкое в применении и установке приложение для демонстрации экрана, вебинаров , онлайн встреч, удаленного доступа и техподдержки.
The Mikogo Team
WWW: http://www.mikogo.ru
Twitter: http://twitter.com/mikogo
Facebook: http://www.mikogo.com/faceboo
не очень хотел включать TeamViewer в список, т.к. он не бесплатный для коммерческого использования, в отличие от многих
Тимвьювер не бесплатный, поэтому не включили.
Из бесплатных для коммерческого использования есть aeroadmin http://www.aeroadmin.com
В принципе то же самое, но с облегченным функционалом. Хотя достаточно шустрая штука. Может кому пригодится.
A yestli soft bez klientskoy 4asti?
Совершенно без клиентской части нет, конечно.
Что-то ведь должно будет будет отображать изображение и передавать управление мышью/клавиатурой?
Из наиболее «клиентонезависимых» в списке могу посоветовать:
Ajax VNC — подключаться можно используя браузер. Клиент в данном случае — любой браузер с поддержкой ajax.
UltraVNC, TightVNC — позволяет подключаться с использованием Java-апплета. Клиентом может быть браузер + Java.
Под Java есть ещё несколько различных клиентов в списке.
Но вообще-то для того же VNC (и для RDP) есть клиенты практически под все компьютерные платформы. Начиная от обычных windows/unix и браузеров, заканчивая смартфонами и DOSом.
Можно подключаться к UltraVNC через браузер (необходимо в настройках разрешить Java апплет, это конечно не совсем без клиентской части, но все же 🙂
И кстати в браузерном клиенте раскладки нормально работают
Есть еще подобная. ServerSR — Система удаленного доступа к компьютеру через мобильный телефон. http://ak251072.narod.ru
Всем привет.\
А можно подключиться удалена через PSTools! и кстати меньше трафика требуется .
Хорошая прога PSTools. ))
Каму надо скачать и инструкция как настраивать PsTools
смотреть тут –
http://awror.ru/view_index.php?id=15
Особена мне нравится утилита PsExec – Позволяет выполнить приложение на локальном и удаленном компьютере.
ставлю этой проге 5 баллов.
Набор утилит pstools для управления компьютером правильнее скачивать отсюда:
http://technet.microsoft.com/ru-ru/sysinternals/bb896649.aspx 😉
Работает через майкрософтовские протоколы (они обычно в инете режутся в целях безопасности)
Конечно, в интранете, для управления сетевыми станциями — отличный инструмент.
Но это не полноценный удалённый рабочий стол, а утилиты для операций с процессами и около этого.
Сам использовал для автоматизации разных действий и на отвратительных каналах.
ну вот, еще один грамотей высрался. куда же без твоих трех копеек?
Вот еще есть прожка, юзаю ее после того как задолбал TeamViewer своими ограничениями
http://www.ammyy.com/ru/
Супер простая программа — все клиенты довольны)) из минусов только один, бесплатная для не коммерческого использования.
Классная статья, спасибо
Есть еще подобная. ServerSR — Система удаленного доступа к компьютеру через мобильный телефон.
классная статья спасибо!
А существует прога удаленного доступа по номеру телефона такая как hipeterminal или ventafax
Большинством из перечисленного пользовался. Единственные программы для удаленного доступа, которые заслуживают внимания это teamviewer и его бесплатный аналог Ammyy Admin.
http://www.ammyy.com
Из этого списка они единственные, которые работают без установки, настроек и обходят NAT и фаерволы. А Ammyy Admin все это делает и без регистрации.
Не согласен насчёт бесполезности. Умелым рукам разные инструменты пригодятся 😉
Например, по тому же принципу что Ammyy Admin и TeamViewer можно настроить UltraVNC без настроек со стороны клиента и с обходом NAT.
Для этого надо запустить вьювер на сервере в listen-mode, а клиенту дать ссылку на скачивание UltraVNC Single Click. Клиенту ничего настраивать не надо будет.
Это решение можно легально бесплатно использовать в коммерческих целях (в отличие от TeamViewer). И нет зависимости от каких-то других фирм.
Я его использую.
К тому же в списке есть клиенты для экзотических ОС (у Ammyy Admin, например, нет клиента кроме как под Windows)
Решает ли какая-нибудь программа из списка следующие задачи (для Windows):
Ограничить удалённый доступ к системе, разрешить доступ только к одному, определенному окну, например только к калькулятору? (в режиме интерактивной работы, а не в режиме презентации)
Ограничить функциональность рабочего окна. Например, берём калькулятор Windows, запрещаем пользователям операцию умножения, остальные операции разрешаем.
Про полное ограничение доступа — есть логины/пароли, часто в программах есть ограничения по ip. Можно запретить доступ через брандмауэр.
По другому первое, что приходит в голову:
> разрешить доступ только к одному, определенному окну
1) можно создать ограниченную среду при подключении по RDP на терминальном windows-сервере, чтобы у него запускалось только нужное приложение:
2) ultravnc позволяет указать заголовок окна, открытого на просмотр
В tightvnc 1.x тоже была такая функциональность:
Tightvnc я тестировал — зона просмотра/управления ограничена окном, при закрытии окна закрывался сеанс.
Но более правильно использовать 1-й вариант, по-моему, т.к. в этом случае можно настроить действительно ограниченную одним приложением среду, а не ограничивать зону просмотра и контроля.
>Ограничить функциональность рабочего окна. Например, берём калькулятор Windows, запрещаем пользователям операцию умножения, остальные операции разрешаем.
Мышку можно водить, кнопочки нажимаются, приложение реагирует на запросы — так как можно ограничить? Я о подобном ограничении не слышал.
Наверное, можно сделать какую-нибудь резидентную программу, которая блокирует определённые нажатия кнопок и другие операции к api управления windows, но предполагаю что это будет ненадёжное решение.
Вообще не думаю что ограничение операций внутри приложения является задачей инструментов удалённого доступа. Скорее это задача приложения или операционной системы (если нужно ограничить доступ к сервисам ОС).
Источник