Как запустить команду SSH из www-данных - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно запустить эту команду из php / nginx (www-data)

shell_exec("ssh -o StrictHostKeyChecking=no root@$host 'ps axo pid,cmd'")

Но получите эту ошибку

Failed to add the host to the list of known hosts (/root/.ssh/known_hosts).
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Пожалуйста, используйте "phpseclib" для реализации PHP SSH. Ниже приведен пример:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.example.com');
if (!$ssh->login('uname', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
0 голосов
/ 03 июля 2018

Это проблема с правами доступа, в то время как пользователь www-data не имеет разрешения на запись в каталог / var / www / .ssh (/ var / www является домашней папкой по умолчанию для Пользователь www-data).

Проблема должна быть решена путем запуска следующих команд

mkdir /var/www/.ssh
chown -R www-data:www-data /var/www/.ssh
0 голосов
/ 03 июля 2018

ошибка разрешения. вам нужно добавить - 'sudo' перед командой.

sudo shell_exec("ssh -o StrictHostKeyChecking=no root@$host 'ps axo pid,cmd'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...