shell_exec无法在虚拟机中使用ssh命令

时间:2019-03-28 12:38:20

标签: php shell ssh terminal shell-exec

我有一个脚本PHP,其中有一个命令sshls -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.

0 个答案:

没有答案