由PHP后端代码触发的来自python脚本的SSH


SSH from python script which is triggered by PHP backend code

我正试图从php调用一个python脚本(使用example)
python脚本在内部调用shell脚本,shell脚本有一个ssh和scp命令
在使用exec执行PHP后端代码时,我在example日志文件中观察到以下错误
python脚本通过命令行运行良好

Could not create directory '/sbin/.ssh'.^M
Failed to add the host to the list of known hosts          (/sbin/.ssh/known_hosts).^M
Permission denied, please try again.^M
Permission denied, please try again.^M
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).^M
Could not create directory '/sbin/.ssh'.^M
Host key verification failed.^M

与手动运行python脚本相比,PHP调用python脚本时,可能由不同的用户运行,后者没有适当的权限执行脚本试图执行的任何操作。因此,为了使脚本成功运行,您需要针对脚本将要尝试做的各种事情调整权限/用户组。

研究这个问题可能是一个很好的起点:

如何检查php的用户身份?

一旦确定了实际运行脚本的用户,就可以尝试以该用户的身份运行脚本,然后在出现问题时进行修复。

如果没有看到Python脚本,我无法确定,但这可能与php用户调用脚本时的工作目录有关。您应该在代码中使用绝对路径或使用

os.chdir(<path>)

以确保您使用的是正确的工作目录。请注意,如果您这样做,您可能会遇到另一个答案中提到的权限错误,因为.ssh及其文件通常只能由其所在目录的用户访问。