PHP shell_exec ssh连接

bik*_*ben 5 php linux ssh shell-exec

我知道这个问题之前已经有很多不同的问题,但是我仍然在摸不着为什么我不能让这个问题起作用.

首先,我有两个SLES服务器设置,它们是服务器A和服务器B,它们都运行在一个小型专用网络上,只能由一个专门的团队访问.

服务器A配置为运行Apache,PHP,MYSQL和ssh的Web服务器,所有这些服务器都运行无问题.

服务器B用于运行安装和激活ssh的内侧任务.

我已经在服务器A上创建了我的rsa密钥,并将其安装在服务器B上,当在命令行运行时,我会立即登录,不需要输入密码.我在服务器A上为root和nobody帐户重复了这个过程.

我已将这个PHP页面添加到服务器A,如下所示:

<?php
shell_exec('ssh root@192.162.0.5 ./StartTest.sh');

header("Location: archive.php?page=home"); 
?>
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时它不会创建我的文件夹.如果我从命令行运行它,它适用于两者(我想两者,我不记得我是否尝试过现在cli上的nobody帐户)root&nobody帐户.我甚至将无人帐户添加到根组,但仍然没有快乐.

我在这里错过了一些东西吗?我想做的就是通过php&ssh从服务器A连接到服务器B来执行一个命令并重定向到网站上的另一个页面.

由于我的对乙酰氨基酚库存不足,所以任何帮助都会受到赞赏.

小智 9

George Cummins所说的内置SSH支持是不存在的.它是PHP的扩展,默认情况下不包含在内.它必须单独编译,并且众所周知难以设置/使用.我的建议是使用phpseclib,一个纯PHP SSH实现:

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

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
Run Code Online (Sandbox Code Playgroud)