通过exec-ssh密钥问题在php中执行ssh命令

通过exec-ssh密钥问题在php中执行ssh命令,php,ubuntu,ssh,php-7,Php,Ubuntu,Ssh,Php 7,我有一些代码可以在远程服务器上运行,但不会在本地php实例上运行 private function serverCmd($server, $cmd, $exec = false) { $line = system("whoami"); print($line."\n"); $localCmd = 'ssh -o StrictHostKeyChecking=no myuser@uk-staging.internal.myhost.com "mkdir -p /hom

我有一些代码可以在远程服务器上运行,但不会在本地php实例上运行

    private function serverCmd($server, $cmd, $exec = false) {
    $line = system("whoami");
    print($line."\n");
    $localCmd = 'ssh -o StrictHostKeyChecking=no myuser@uk-staging.internal.myhost.com "mkdir -p /home/deploy/backups/etl; rm -f /home/deploy/backups/etl/*.gz; rm -f /home/deploy/backups/etl/*.csv; sudo chown myhost:mysql /home/deploy/backups/etl"';
    for ($retry = 0; $retry < 10; $retry++) {
        if ($exec) {
            $output = array();
            exec($localCmd, $output, $retval);
            if ($retval === 0) return $output;
        }
        else {
            system($localCmd, $retval)
            if ($retval === 0) return true;
        }
        sleep(1);
    }
    return false;
}
专用函数serverCmd($server,$cmd,$exec=false){
$line=系统(“whoami”);
打印($line.“\n”);
$localCmd='ssh-o StrictHostKeyChecking=否myuser@uk-staging.internal.myhost.com“mkdir-p/home/deploy/backups/etl;rm-f/home/deploy/backups/etl/*.gz;rm-f/home/deploy/backups/etl/*.csv;sudo chown myhost:mysql/home/deploy/backups/etl”;
对于($retry=0;$retry<10;$retry++){
如果($exec){
$output=array();
exec($localCmd,$output,$retval);
如果($retval==0),则返回$output;
}
否则{
系统($localCmd,$retval)
如果($retval==0),则返回true;
}
睡眠(1);
}
返回false;
}
问题在于这一行:系统($localCmd,$retval)

如果我直接在我的ubuntu shell上运行ssh命令,它会工作,但是如果php试图通过该行运行它,它就会挂起,并且我在尝试使用ssh的服务器上遇到以下错误: sshd[10203]:我的用户的延迟键盘交互sshd[10202]:错误:PAM:我的用户身份验证失败

我的dev机器有ssh密钥设置,我可以在不输入密码的情况下通过ssh登录。我假设php将使用与使用我的用户相同的方法

如何确保php使用与我的shell相同的密钥和身份验证方法进行ssh?这是一个cli脚本


有人有什么想法吗?

PHP可能没有使用您的用户,而是以www数据用户的身份连接,该用户无法访问您的私钥。您需要将您的私钥放在Web服务器可以访问的地方,根据需要更改所有权/权限,然后在
ssh
命令中使用hte
-i
选项指向要用作您的密钥的特定私钥identitity@ivanivan这是一个cli脚本,如果我这样做了:system(“whoami”);这表明它使用的是同一个用户。对此完全不知所措