PHP和phpseclib连接问题


PHP and phpseclib connection issue

我在使用PHP和phpseclib时遇到连接问题。我希望有人以前见过这个问题。我已经使用Filezilla(本地PC)成功测试了SFTP连接。我使用somefile.pem文件作为RSA私钥。我可以查看该文件,并确认其开头写着"-----BEGIN RSA PRIVATE KEY-----"。Filezilla不需要密码,只需要私钥。

在下面的代码中,我有基本的SFTP设置。我已经尝试了所有三种登录方式。似乎都没有连接错误。

http://phpseclib.sourceforge.net/new/sftp/examples.html

服务器上有相同的.pem文件,试图通过phpseclib运行SFTP连接。我可以var_dump并确认$pem变量是一个字符串。当我var_dump$key对象时,我看不到RSA密钥文本。我以为它会在var_dump的某个地方。loadKey方法似乎没有加载$pem字符串。

我也无法使用echo$sftp->getLog()获得日志输出;

define('NET_SFTP_LOGGING', 2); //turn on logging.
require_once('Net/SSH2.php');
require_once('Net/SFTP.php');
require_once('Net/SFTP/Stream.php');
require_once('Crypt/RSA.php');
require_once('Math/BigInteger.php');
$sftp = new Net_SFTP('***IP_ADDRESS***');
$key = new Crypt_RSA();
$key->setPassword('***PASSWORD***');
$pem = file_get_contents(FCPATH . '**PATH***/somefile.pem'); // RSA PRIVATE KEY
$key->loadKey($pem);
if (!$sftp->login('**USERNAME***', $key) && !$sftp->login('**USERNAME***', '**PASSWORD***')) {
//if (!$sftp->login('**USERNAME***', '**PASSWORD***')) {
//if (!$sftp->login('**USERNAME***', $key)) {
    echo "<pre>";
    var_dump($pem);
    var_dump($key);
    var_dump($sftp);
    echo $sftp->getSFTPLog();
    exit('Login Failed');
}

错误通知:

A PHP Error was encountered
Severity: User Notice
Message: Cannot connect to **IP**:22. Error 110. Connection timed out
Filename: Net/SSH2.php
Line Number: 960

PHP信息显示以下内容:

注册的PHP流:https,ftps,compress.zlib,compress.bzip2,PHP,file,glob,data,http,ftp,phar,zip

已注册的流套接字传输:tcp、udp、unix、udg、ssl、sslv3、sslv2、tls

它在使用任何私钥之前都会出错。所以它与密钥无关。

检查960:线周围的Net'SSH2.php

$this->fsock = @fsockopen($this->host, $this->port, $errno, $errstr, $timeout);
if (!$this->fsock) {
    user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"));
    return false;
}

确保您的web服务器与SFTP服务器之间存在连接。您的Web服务器可能根本不允许出站连接。