The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Выполнение команды по SSH, запускаемой через PHP"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Выполнение команды по SSH, запускаемой через PHP"  +/
Сообщение от Opus on 13-Апр-17, 11:46 
Столкнулся с задачей:
Есть вебсервер, на котором апач работает от пользователя WWW. На страницу нужно добавить кнопку, которая будет перезапускать демон на удаленном убунту-сервере.
С вебсервера перезагружать нужный демон можно вот так:
ssh root@192.168.1.2 "/etc/init.d/pentagon restart"
Но через shell_exec так сделать нельзя, так как апач запущен не от рута, а от виртуального, несуществующего пользователя, по этому SSH по ключах у него не работает. Сгенерировать ему ключи тоже невозможно.
Как быть? Дайте совет.
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Выполнение команды по SSH, запускаемой через PHP"  +/
Сообщение от PavelR (??) on 13-Апр-17, 12:19 
> С вебсервера перезагружать нужный демон можно вот так:
> ssh root@192.168.1.2 "/etc/init.d/pentagon restart"
> Но через shell_exec так сделать нельзя, так как апач запущен не от
> рута, а от виртуального, несуществующего пользователя

рут ему и не нужен.

> по этому SSH по ключах у него не работает.
> Как быть? Дайте совет.

1) man ssh
2) Скриптом создаете файлик, по крону проверяете наличие файлика, удаляете его, делаете перезапуск.

>Сгенерировать ему ключи тоже невозможно.

Утверждение не соответствует действительности.
Сгенерировать можно что угодно где угодно.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Выполнение команды по SSH, запускаемой через PHP"  +/
Сообщение от Opus on 13-Апр-17, 12:57 
> рут ему и не нужен.

Плохо выразился. На руте сгенерирован SSH-ключ, который заброшен на второй сервер. То есть фактически в текущий момент до второго сервера без пароля можно достучаться только от рута.

> 1) man ssh
> 2) Скриптом создаете файлик, по крону проверяете наличие файлика, удаляете его, делаете
> перезапуск.

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

> Утверждение не соответствует действительности. Сгенерировать можно что угодно где угодно.

Как сгенерировать ключи пользователю, которого не существует, и у которого нет никаких прав?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Выполнение команды по SSH, запускаемой через PHP"  +/
Сообщение от ALex_hha (ok) on 13-Апр-17, 14:09 
> делать постоянную проверку наличия файла при том, что кнопка на сайте может быть нажата раз в пару дней как по мне не очень хорошее решение.

для этого придумали cron

> Как сгенерировать ключи пользователю, которого не существует, и у которого нет никаких прав?

вы вообще знаете как работает аутентификация по ключам?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Выполнение команды по SSH, запускаемой через PHP"  +1 +/
Сообщение от ACCA (ok) on 13-Апр-17, 19:46 
> Как сгенерировать ключи пользователю, которого не существует, и у которого нет никаких
> прав?

  • Идиотская затея - давать рутовый вход куда бы то ни было юзеру www. Тем более, через PHP
  • Ты путаешь "запрещён login" и "существует". Если есть UID (есть запись в /etc/passwd), значит существует. А значит, ему можно отдать файл с ключом

    На целевой машине впиши "/etc/init.d/pentagon restart" в inetd.conf/xinetd/socket unit, повесь на какой-нибудь порт 12345. Открываешь туда соединение - перезапускается твой pentagon.

    Хотя по-уму следовало бы разобраться в его глюках, чтобы перезапускать не приходилось или чтобы он сам себя перезапускал.

  • Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

    6. "Выполнение команды по SSH, запускаемой через PHP"  +/
    Сообщение от Аноним (??) on 14-Апр-17, 04:09 
    >[оверквотинг удален]
    > [li] Идиотская затея - давать рутовый вход куда бы то ни было
    > юзеру www. Тем более, через PHP
    > [li] Ты путаешь "запрещён login" и "существует". Если есть UID (есть запись
    > в /etc/passwd), значит существует. А значит, ему можно отдать файл с
    > ключом
    > На целевой машине впиши "/etc/init.d/pentagon restart" в inetd.conf/xinetd/socket unit,
    > повесь на какой-нибудь порт 12345. Открываешь туда соединение - перезапускается твой
    > pentagon.
    > Хотя по-уму следовало бы разобраться в его глюках, чтобы перезапускать не приходилось
    > или чтобы он сам себя перезапускал.

    как всегда - не в бровь, а в глаз ☺

    Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

    4. "Выполнение команды по SSH, запускаемой через PHP"  +/
    Сообщение от михалыч (ok) on 13-Апр-17, 17:50 
    > Столкнулся с задачей:
    > Есть вебсервер, на котором апач работает от пользователя WWW. На страницу нужно
    > добавить кнопку, которая будет перезапускать демон на удаленном убунту-сервере.
    > С вебсервера перезагружать нужный демон можно вот так:
    > ssh root@192.168.1.2 "/etc/init.d/pentagon restart"
    > Но через shell_exec так сделать нельзя, так как апач запущен не от
    > рута, а от виртуального, несуществующего пользователя, по этому SSH по ключах
    > у него не работает. Сгенерировать ему ключи тоже невозможно.
    > Как быть? Дайте совет.

    sudo?
    например так:

    <?php

    print ("<form method=post><input type=submit name=reboot value=OK></form>");
    if ( isset($_POST['reboot']) ) { exec ("/usr/local/bin/sudo /path/to/reload.sh"); }

    ?>


    ну и в файл sudoers добавить
    www ALL=NOPASSWD: /path/to/reload.sh

    а уж в reload.sh и запускать то что нужно
    ssh root@192.168.1.2 "/etc/init.d/pentagon restart

    Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

    Архив | Удалить

    Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру