У меня есть скрипт 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.