通过exec -ssh键问题

时间:2018-05-16 10:38:07

标签: 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 /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;
}

问题出在这一行:system($ localCmd,$ retval)。

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

我的开发机器设置了ssh键,我可以直接输入而无需输入密码。我假设php将使用与使用我的用户相同的内容。

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

有人有任何想法吗?

0 个答案:

没有答案