我正在尝试从PHP进行SSH,但是我收到以下错误:
注意:无法连接到[host]。错误13。 第875行/usr/share/php/Net/SSH2.php中的权限被拒绝
以下是代码:
<?PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
include_once('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
$ssh = new Net_SSH2($host);
if( $ssh->login($id, $pw) )
{
error_log("logged");
$result['data'] = $ssh->exec('dir');
}
else
{
error_log( $ssh->getLog() );
}
?>
但是当我从命令行运行这个相同的代码时,apache从混合中运行就可以了。
我有一个与使用paramiko到SSH的python脚本完全相同的问题,并且是从apache调用的。它从命令行运行良好但在apache中从PHP调用时失败并出现权限错误。使用这个脚本只是一个测试; python不会在最终解决方案中使用。
那么,为什么SSH在apache之外工作但不是从内部工作?我使用su从命令行运行PHP代码作为apache,这也有效,所以它不是用户权限问题。
更新:
AAaarrrggh!被SELinux再次咬伤。这个页面有解决方案: php run git got "ssh Permission denied"
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache无权启动网络连接!?!?
我忽略了提到这是在CentOS系统上,因此在SELinux的监视下,我的错误。
答案 0 :(得分:5)
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache无权发起网络连接
答案 1 :(得分:4)
AAaarrrggh!被SELinux再次咬伤。这个页面有解决方案:php run git got&#34; ssh Permission denied&#34;
答案是:
setsebool -P httpd_can_network_connect = 1
基本上,apache无权启动网络连接!?!?
我忽略了提到这是在CentOS系统上,因此在SELinux的监视下,我的错误。