Member 10390715 Ответов: 0

Как мне перезагрузить ubuntu 16.04 удаленно?


Привет,
Я пытаюсь перезагрузить свою Ubuntu 16.04 через PHP.
Я установил расширение SSH2, пишу код, и у него есть проблема:
SSH connection: [OK]
Athentication: [OK]
Shell: [OK]
reboot -i
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-66-generic x86_64)

* Documentation: https://help.ubuntu.com/

332 packages can be updated.
4 updates are security updates.

Last login: Sun Mar 12 18:50:57 2017 from 192.168.80.137
]0;lam@lam: ~lam@lam:~$ reboot 
Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to start reboot.target: Interactive authentication required.
See system logs and 'systemctl status reboot.target' for details.
Failed to open /dev/initctl: Permission denied
Failed to talk to init daemon. 

Затем я использую командную строку:
#chmod 777 /dev/initctl

Это работа, перезагрузка Ubuntu через PHP!!!!.
Но после перезагрузки, я пробую php код, который я получаю, я показываю аналогичную ошибку выше. Я должен снова #chmod 777 /dev/initctl, чтобы сохранить его работу.
Пожалуйста, помогите мне.
P/s: Вот мой php-код
<?php
        echo "SSH connection: ";
        if (!($resource=@ssh2_connect("192.168.80.137"))) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";

        echo "Athentication: ";
        if (!@ssh2_auth_password($resource,"lam","root")) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";

        echo "Shell: ";
        if (!($stdio = @ssh2_shell($resource,"xterm"))) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";
		//$permission = "chmod 777 /dev/initctl \n";
		//fwrite($stdio,$permission);
        $command = "reboot\n";
        fwrite($stdio,$command);

        sleep(1);

        while($line = fgets($stdio)) {
                flush();
                echo $line."<br />";
        }

        fclose($stdio);
?>


Что я уже пробовал:

Перезагрузите мой Ubuntu 16.04 через PHP.

Peter_in_2780

/dev/initctl-это канал, воссоздаваемый каждый раз при перезагрузке. Так что ваш chmod не упорствует.
Чтобы перезагрузить мой сервер Ubuntu 16.04 LTS удаленно, я подключаюсь по ssh и "sudo reboot". Кстати, я использую строгую аутентификацию. Нет имя пользователя/логин пароль.

Member 10390715

Спасибо вам. И это мое решение. Я включаю SSH от пользователя root.
откройте файл конфигурации sshd /etc/ssh/sshd_config и измените строку:
ОТ:
PermitRootLogin запретить-пароль
ТО:
Настроен с параметром да
И мне не нужно использовать "sudo"

Albert Holguin

К вашему сведению... это считается плохим для безопасности, поэтому функция по умолчанию отключена.

0 Ответов