我有一些在远程服务器上运行的代码很好但不会在我的本地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脚本
有人有任何想法吗?