我有一些在远程服务器上运行的代码很好但不会在我的本地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到:sshd [10203]:推迟键盘交互对于我的用户sshd [10202]:错误:PAM:myuser的身份验证失败 .
我的开发机器有ssh键设置,我可以直接输入而无需输入密码 . 我认为php会像使用我的用户一样使用它 .
我如何确保php使用相同的密钥和身份验证方法作为我的shell ssh in?这是一个cli脚本
有人有任何想法吗?