我有一个脚本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.`
当我在ssh命令上使用sudo时,它将返回另一个错误,如下所示:
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.