如何从www-data运行SSH命令

时间:2018-07-03 09:25:35

标签: php ssh

我需要从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 :(得分:1)

请对PHP SSH实现使用“ phpseclib”。 下面是示例:

<?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');
?>

答案 1 :(得分:0)

这是一个权限问题,而 www-data 用户没有对 /var/www/.ssh 目录的写权限(/ var / www是默认目录www数据用户的文件夹)。

通过运行以下命令可以解决此问题

mkdir /var/www/.ssh
chown -R www-data:www-data /var/www/.ssh

答案 2 :(得分:-2)

其权限错误。您需要在命令前添加-'sudo'。

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