wes*_*mat 4 php apache ssh phpseclib
我正在尝试从PHP进行SSH,但出现以下错误:
注意:无法连接到[主机]。错误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() );
}
?>
Run Code Online (Sandbox Code Playgroud)
但是,当我在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
Run Code Online (Sandbox Code Playgroud)
基本上,apache无权启动网络连接!
我忽略了这是在CentOS系统上的问题,因此在SELinux的密切关注下,这是我的错。
小智 6
答案是:
setsebool -P httpd_can_network_connect=1
Run Code Online (Sandbox Code Playgroud)
基本上,apache无权启动网络连接
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |