выполнение команды ssh в php через exec -ssh - PullRequest
0 голосов
/ 16 мая 2018

У меня есть немного кода, который отлично работает на удаленном сервере, но не будет работать на моем локальном экземпляре 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

У кого-нибудь есть идеи?

...