【问题标题】:How to run a SSH command from www-data如何从 www-data 运行 SSH 命令
【发布时间】:2018-07-03 17:40:35
【问题描述】:

我需要从 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).

【问题讨论】:

  • 创建此目录并使其归www-data所有。

标签: php ssh


【解决方案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');
?>

【讨论】:

【解决方案2】:

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

应该通过运行以下命令来解决这个问题

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

【讨论】:

  • 它确实有效,顺便说一句
【解决方案3】:

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

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

【讨论】:

  • 哦,是的!...对不起,我的错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2019-05-20
  • 2018-05-01
  • 2013-06-05
相关资源
最近更新 更多