phpseclib SFTP 用户身份验证失败

phpseclib SFTP failed user authentication

我正在尝试使用 phpseclib 在 laravel 5.7 框架上通过我的 Web 应用程序 运行 测试 SFTP 连接。这是验证码,只使用密码验证。 SFTP 服务器还使用 IP 白名单作为附加安全措施。

                $sftp = new SFTP(env('SFTP_HOST'));
                if (!$sftp->login(env('SFTP_USER'), env('SFTP_PASSWORD'))) {
                    echo $sftp->getLog();
                }

-vvv 日志几乎让我怀疑服务器是否正在使用多重身份验证。就像您必须同时提供 RSA 密钥和密码一样。如果是这样,你应该能够做到这一点:

$key = new RSA;
$key->loadKey(file_get_contents('/home/forge/.ssh/id_rsa'));

$sftp = new SFTP(env('SFTP_HOST'));
if (!$sftp->login(env('SFTP_USER'), $key, env('SFTP_PASSWORD'))) {
    echo $sftp->getLog();
}

-vvv 日志还表明它直接跳到键盘交互身份验证 - 它甚至没有尝试密码身份验证。您可以通过 $sftp->login(env('SFTP_USER'), ['Password:' => env('SFTP_PASSWORD')]) 而不是您正在做的事情来强制 phpseclib 进行键盘交互。

或许结合使用这两个技巧可以帮助您。