【问题标题】:PHP and phpseclib connection issuePHP 和 phpseclib 连接问题
【发布时间】:2014-11-03 01:08:58
【问题描述】:

我在使用 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

【问题讨论】:

    标签: php rsa sftp phpseclib


    【解决方案1】:

    在使用任何私钥之前它会出错。所以和key没有关系。

    检查第 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;
    }
    

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

    【讨论】:

    • 是的,我最终从终端尝试了 SFTP; “正在连接到 IP...ssh:连接到主机 IP 端口 22:连接超时。无法读取数据包:对等方重置连接。”我认为这可能是防火墙问题?
    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多