У меня есть немного кода, который отлично работает на удаленном сервере, но не будет работать на моем локальном экземпляре 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).
если я запускаю команду ssh непосредственно в моей оболочке ubuntu, она работает, но если php пытается запустить ее через эту строку, она просто зависает, и я получаю следующую ошибку на сервере, пытающуюся выполнить ssh: sshd[10203]: отложенная интерактивная клавиатура для моего пользователя sshd [10202]: ошибка: PAM: ошибка аутентификации для myuser.
На моем компьютере разработчика настроены ssh-ключи, поэтому я могу просто войти в ssh без ввода пароля.Я предполагал, что php будет использовать то же самое, что и мой пользователь.
Как мне убедиться, что php использует те же ключи и методы аутентификации для ssh, что и моя оболочка?Это сценарий cli
У кого-нибудь есть идеи?