shell_exec не работает с командой ssh ​​на виртуальной машине - PullRequest
0 голосов
/ 28 марта 2019

У меня есть скрипт PHP, в котором есть команда ssh с ls -la для вывода списка файлов и каталогов. Но когда я запускаю скрипт, он возвращает мне код ошибки 255 в дополнение к следующему сообщению об ошибке:

Could not create directory '/usr/sbin/.ssh'. ssh_askpass: exec(/usr/bin/ssh-`askpass): No such file or directory Host key verification failed.`

Когда я использую sudo в команде ssh, она возвращает мне еще одну ошибку:

sudo: no tty present and no askpass program specified

Ключ аутентификации уже находится в файле know_hosts, и когда я запускаю ту же команду внутри terminal, подключаясь через ssh, все работает отлично. Ключ находится внутри папки Downloads, а ее разрешение - 0644. Я пробовал несколько возможных решений, но ни одно из них не помогло мне решить проблему.

Вот код, используемый:

$oldldpath = getenv('LD_LIBRARY_PATH');
putenv("LD_LIBRARY_PATH=");
var_dump(shell_exec("ssh -i $key_file user@ip \"ls -la ~\" 2>&1"));
putenv("LD_LIBRARY_PATH=$oldldpath");

Редактирование - исправление части проблемы

Проблема Could not create directory '/usr/sbin/.ssh' была исправлена ​​после создания папки .ssh внутри /usr/sbin. Теперь, когда скрипт запускается снова, он возвращает остальную часть проблемы, которая выглядит следующим образом:

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory Host key verification failed.

Редактировать 2:

Вышеуказанная ошибка была исправлена ​​с установкой ssh_askpass из следующего кода:

sudo apt-get install ssh-askpass

Однако после исправлений описанных ошибок была сгенерирована еще одна ошибка:

No protocol specified Error: Can't open display: :0.0 Host key verification failed.
...