我正在尝试从PHP进行SSH,但出现以下错误:
注意:无法连接到[主机]。错误13。在第875行的/usr/share/php/Net/SSH2.php中,权限被拒绝
这是代码:
login($id, $pw) ) { error_log("logged"); $result['data'] = $ssh->exec('dir'); } else { error_log( $ssh->getLog() ); } ?>
但是,当我在apache中从命令行运行相同的代码时,它运行良好。
我对使用paramiko进行SSH并从apache调用的python脚本有完全相同的问题。它可以从命令行正常运行,但是在Apache中从PHP调用时失败,并显示权限错误。使用此脚本只是一个测试;python不会在最终解决方案中使用。
那么,为什么SSH在Apache外部而不是在内部工作?我已经使用su从命令行以apache的身份运行PHP代码,并且该方法也有效,因此这不是用户权限问题。
更新:
AAaarrrggh!被SELinux再次咬伤。此页面具有解决方案: php run git得到了“ ssh许可被拒绝”
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache无权启动网络连接!
我忽略了这是在CentOS系统上的问题,因此在SELinux的密切关注下,这是我的错。
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache无权启动网络连接