我正在尝试从 PHP 使用 SSH,但出现以下错误:
注意:无法连接到[主机]。错误 13。 /usr/share/php/Net/SSH2.php 第 875 行的权限被拒绝
代码如下:
<?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 并从 apache 调用的 python 脚本中遇到了完全相同的问题。它从命令行运行良好,但在 apache 中从 PHP 调用时失败并出现权限错误。使用这个脚本只是一个测试;最终方案不会用到python。
那么,为什么 SSH 在 apache 外部工作而不是在 apache 内部工作?我已经使用 su 从命令行将 PHP 代码作为 apache 运行并且也有效,所以这不是用户权限问题。
更新:
啊啊啊啊!再次被 SELinux 咬伤。此页面有解决方案: php run git got "ssh Permission denied"
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache 没有被授权启动网络连接!?!?
我没有提到这是在 CentOS 系统上,因此受到 SELinux 的关注,我的错误。
最佳答案
答案是:
setsebool -P httpd_can_network_connect=1
基本上,apache没有被授权发起网络连接
关于php - 无法从 Apache 内部连接 Net_SSH2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537090/