Удаленное отключение сервера linux

Удаленное отключение сервера linux

Posted via ActualForum NNTP Server 1.5

13 ��� 12, 13:18����[12411545] �������� | ���������� �������� ����������
Re: ��� ������� ��������� ������ [new]
miwaonline
Member

������:
���������: 2249

pwrf
��� ���������� ����� �����. ��� ��������� ���������� ������ ������ ������ � ��������� ������ ��������.
� ��� ���������� ��� ��������..

������? ������ ������ ��� �������?

pwrf
miwaonline ������ ���������?
� �� ����� ���� � ��������.
��������� ���� ��� ������ ����������?
� � �� �����, ��� ����� ������� ������ putty ����� ������������ ���� ����?
��� ����, putty ��� ����� ��� ����������� � ��������������, �.�. � ���� ��� ���������� � ��������.

plink — ��� ����������� ���� �� windows, ������� ����� � �������������� ������ ��������� ������� �� �������. ��� ��� ���� ������ �������� � ��������� ������������ ��� windows-side ��������� plink � ������������ ������� ����
� cmd-����. ���� ���� ����� ����� ��������� � �� �� �����, ��� � plink — ��� ���������� ��������� � ������. ����� � ����� — �� �������, ��� ���� ����.

P.S. ���� �� �������������� � �������������, �� ����� �� �������� � sudo, ��� ����������� MasterZiv, � ������������ � ������ cds ����� � ������� ����.

13 ��� 12, 13:54����[12411858] �������� | ���������� �������� ����������
Re: ��� ������� ��������� ������ [new]
MasterZiv
Member

Posted via ActualForum NNTP Server 1.5

13 ��� 12, 16:06����[12413114] �������� | ���������� �������� ����������
Re: ��� ������� ��������� ������ [new]
MasterZiv
Member

ssh youruser@yourhost sudo shutdown -P now

plink youruser@yourhost sudo shutdown -P now

Источник

Как дистанционно выключить все компьютеры linux?

Подскажите плз как из под linux массово выключить linux компьютеры в заданное время?

И отдельный скрипт по включению?

на выключение пробовал через expect — почему-то не получилось.

вот пример мой выключения 1 компьютера, но он не работает, почему?

Перемещено beastie из general

Чтобы никого не обидеть, будем называть его a-word.

А чего не ssh root@192.168.2.27 poweroff ? И почему по паролю, а не по ключу?

А разве всякие там puppet и прочие подобные системы не для того придуманы?

есть какие-либо идеи?

Еще более прикольный вопрос: кагого вообще root, если должен быть выделенный юзверь, умеющий только poweroff.

Кстати, можно в shell юзера power написать nohup poweroff → достаточно будет тупо писать ssh power@host

а вот именно через expect это возможно?

чтобы по ключу, я так понимаю надо на всех машинах создать этот ключ?

как сделать именно через expect по паролю?

чтобы по ключу, я так понимаю надо на всех машинах создать этот ключ?

Я без понятия, что такое expect и нафиг оно нужно. А ssh должен быть по ключам. Ибо нефиг фигней маяться!

З.Ы. Ни в коем случае не делай ssh руту по ключам!

З.З.Ы. И лучше вообще запрещать везде доступ руту по ssh. Заходишь под обычным пользователем, потом делаешь su -.

Байку про выезжающий сидюк уже рассказывали?

  • Сделай для рута на каждом клиенте возможность авторизации по ключу,
  • создай отдельный ключ,
  • на каждом клиенте в /root/.ssh/authorized_keys пропиши публичную часть ключа с параметром command=»poweroff» .

Теперь любой ssh -i key.file root@$host выключит host . Только нужно будет ssh по ним всем запустить, чтобы они в known_hosts прописались.

Ни в коем случае не делай ssh руту по ключам!

подписываюсь под вопросом

Вход по ключам + типа такого:

Потому что завладев одним паролем юзверя, от которого запускается этот скрипт, получим рутовский доступ к уйме компов!

По ключам ни в коем случае нельзя руту по ssh.

Ну можно не руту, а отдельному пользователю которому разрешено делать halt

Вот я ниже скриптики и привел для пользователя power, которому шеллом назначается poweroff или halt, запущенный в nohup (чтобы сразу соединение закрылось).

По ключам ни в коем случае нельзя руту по ssh.

С какого это перепугу?

А вот PermitRootLogin prohibit-password не помешает.

Так, с выключением, вроде разобрались. А для включения используй WOL.

Или через sudo и группы:

По ключам ни в коем случае нельзя руту по ssh.

Вообще-то, ключ, по которому доступен рут лежит на машине админа (а кто еще заходит под рутом). И чтобы получить его, нужно чтобы либо админ был балбесом, либо целенаправленная атака на конкретного человека. Т.е. шансов мало завладеть ключем.

В описанной ситуации по-любому нужно уметь делать автоматическое выключение машин, поэтому, кто завладеет машиной, с которой запускается скрипт, тот сможет его запустить. Так что не важно будет там авторизация по ключам или другая. В моем алгоритме, завладев ключем ничего кроме poweroff сделать не получится.

P.S. По моему мнению, закрывание входа по ssh руту — параноя, которая создает трудности (иногда нужно иметь возможность, например, скопировать файлы доступные на одной машине только руту, на другую в место доступное тоже только руту, и делать это в два приема неудобно, кроме того, иногда бывает нужно сделать что-то со /home, отмонтировать, например, а зайдя пользователем и сделав sudo su -, хотяка не отмонтируешь). Короче, запрет входа руту даже по ключу создает неоправданные сложности (не окупает оно себя в общем). Так же как и перевешивание ssh на нестандартный порт, например, чтобы не подбирали пароли пользователей (есть более эффективные методы без необходимости обучать scp, git и другие программы, которые ходят по ssh использованию нестандартного порта).

Представь, что у ТСа рутовский доступ по ключам к сотне компов. Он отошел, забыв заблокировать экран. Кто-нибудь шутки ради запускает скрипт по аналогии с вышеприведенным, но на nohup rm -rf / . Классная будет шутка.

Во первых, по хорошему, сам ключь запаролен. (И ssh-agent для ленивых.)

Во вторых, у тебя параноя. 😉

Представь, что у ТСа рутовский доступ по ключам к сотне компов. Он отошел, забыв заблокировать экран.

Отсюда вытекает правило: «Никому не давай свой комп разблокированным и запущенным ssh-agent’ом!»

P.S. Я наблюдал сильную корреляцию между параноей недавания входа рутом и любовью к FreeBSD (пока BSD еще оставалась популярной в России). Эдди, ты BSD’оид?

я понял. Это мамкин кулхацкер хочет кому-то насолить. К гадалке не ходить.

Представь, что у ТСа рутовский доступ по ключам к сотне компов.

окстись, он же школьник еще. 99 год рождения же.

Нет еще. Но если гента тоже сдохнет, то буду.

Представь, что у ТСа рутовский доступ по ключам к сотне компов. Он отошел, забыв заблокировать экран. Кто-нибудь шутки ради запускает скрипт по аналогии с вышеприведенным, но на nohup rm -rf /. Классная будет шутка.

Абсолютно такой же результат и для пароля. А вот во всех остальных случаях — безопаснее именно ключ.

Не дожидаешься промпта для ввода команд. После пароля добавь строку
expect \\\\# и в конце expect eof
Возможно нужно указать полный путь до poweroff
Еще есть:
set timeout N — где N время в секундах сколько будет ждать команда expect появления строки, если строка не появиться перейдет к следующей команде, при -1 ждать бесконечно.
log_user 1 — помогает при отладке
Вобщем начни эксперименты с безобидных команд, как заработает меняй на poweroff.

С этим сложнее. Читай про всякие WOL и т.п. собственно к linux это уже отношения не имеет.

Во первых, по хорошему, сам ключь запаролен. (И ssh-agent для ленивых.)
Во вторых, у тебя параноя. 😉

Не не, он прав, а то потом истории «бухнул как-то админ и набрал команду. », от себя тоже защищаться надо. 🙂

Я без понятия, что такое expect и нафиг оно нужно. А ssh должен быть по ключам.

Вот! В том-то все и дело, что многие «без понятия, что такое expect», если внезапно кто-то получил доступ к твоей учетке, то скопировать ключики не такая сложная задача, все о них знают, лежат по стандартным путям, а вот про то что я в какой-то там хз где лежащий скрипт пароль прописал (а если еще в хитро извернутом виде) это догадаться надо, так что безопаснее получается 🙂 Это как с вирусами в linux нафиг не нужно никому, так и здесь проще ключи с 100-ни машин собрать чем голову ломать над одним. 🙂

Источник

Как выключить удаленный windows и linux сервер

Начнем с самого сложного. На практике реализовать надежный способ выключения windows машин по сети для меня оказалось сложнее, чем linux. Методов и подходов к решению данной задачи много. Я пробовал разные варианты и остановился на одном, который мне показался самым надежным, он сработал без проблем во всех случаях во время тестирования.

Обязательным условием удаленного выключения сервера является сетевой доступ к нему по rdp. Вы можете находится в локальной сети с ним, подключиться по vpn или пробросить rdp соединение редиректом со шлюза. Не важно, главное попасть в систему по rdp.

Принцип работы удаленного отключения следующий:

  1. На компьютере или сервере создается пользователь, которому будет разрешено подключаться по rdp и завершать работу сервера.
  2. В автозагрузке этого пользователя будет скрипт для завершения работы.
  3. Пользователям, которые будут удаленно выключать сервер, дается специально подготовленный rdp клиент, который без всяких запросов будет подключаться нужным пользователем, у которого будет срабатывать скрипт на завершение работы.

Все достаточно просто, но на каждом этапе я сталкивался с проблемами, которые требовали не тривиального решения. Но обо все по порядку.

Итак, идем на север и создаем там простой bat файл следующего содержания:

Сохраняем файл и создаем пользователя, под которым будем выключать сервер. Не забудьте добавить этому пользователю разрешение подключаться по rdp. Если вы выключаете компьютер с десктопной системой, то прав обычного пользователя достаточно. Если же вам надо погасить Windows Server, то пользователя нужно либо сделать админа, либо дать ему права на разрешение выключение сервера через локальную политику безопасности. Живет эта политика по адресу — >параметры безопасности — >локальные политики —> назначение прав пользователей —> завершение работы системы.

Вот тут я напоролся на первые неприятности. Я назвал свой скрипт shutdown.bat и очень долго не мог понять, почему он не срабатывает. При вводе команды shutdown с параметрами в консоли все отлично работало, но скрипт не запускался. Оказывается, его нельзя называть таким именем. После того, как переименовал в shut.bat, все отлично заработало. Какая-то нелепая загвоздка, но мне пришлось потратить немало времени, пока я разобрался, в чем тут дело.

Дальше заходим нашим новым пользователем, чтобы создались стандартные папки профиля и кладем скрипт автовыключения сервера ему в автозагрузку — C:\Users\shut-user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

Теперь нам нужно настроить автоматический вход пользователя по rdp, чтобы выполнить удаленное завершение работы. Причем пользователь должен заходить на сервер без запроса имени и пароля. Штатными средствами rdp клиента windows это сделать невозможно. Даже если вы сохраните параметры, то при переносе настроек на другой компьютер нужно будет снова вводить пароль. Мне это не подходило.

Я пробовал использовать старую портированную версию rdp 5.2. Это последняя версия, где пароль в зашифрованном виде можно было хранить в файле настроек. Но при переносе этого файла на другой компьютер, все равно выскакивало окно с вводом пароля. Добиться полного автоматизма не получалось.

Но решение было найдено. Существует любопытный проект Remote Desktop Plus, который является надстройкой над rdp. С помощью этой надстройки можно передать параметры в rdp через командную строку, в том числе и имя пользователя с паролем. Мне это полностью подходит. Скачиваем файлик rdp.exe либо с сайта автора проекта, либо с моего. Я скопировал на всякий случай эту очень полезную утилиту. Кладем его в папку и создаем в этой же папке rem-shut.bat файл следующего содержания:

10.10.5.14 адрес удаленного сервера
shut-user пользователь rdp от имени которого будет происходить выключение
pass123 пароль пользователя
640 480 параметры разрешения экрана, можно не указывать

Всего этого достаточно, чтобы выполнить дистанционное завершение работы на windows сервере. Пользователю необходимо передать 2 файла:

Важно, чтобы они лежали в одной папке. При запуске батника произойдет подключение rdp пользователя и выполнится скрипт завершения работы. Задача выполнена.

Удаленное выключение linux сервера

Здесь все оказалось значительно проще. Сразу же было найдено рабочее решение, которое позволяет без проблем удаленно выключить любой linux сервер. Задача решается стандартными средствами putty. Эту программу можно запускать из командной строки с параметрами. В качестве параметров можно указать файл с командами для выполнения, адрес сервера, пользователя и пароль.

Подготовим все необходимое. Сначала создаем простой текстовый документ shutdown.txt следующего содержания:

Дальше создаем bat файл serv-rem-shut.bat с таким содержимым:

shutdown.txt текстовый файл с командой на отключение
22 номер порта ssh
root имя пользователя, от которого будет выполняться команда на удаленное выключение, лучше создать отдельного
rootpass пароль этого пользователя
10.10.5.15 адрес linux сервера

Передаем пользователю 3 файла, сложенные в одну папку:

Источник

Читайте также:  Windows не видит драйвер сетевого адаптера
Оцените статью