【问题标题】:Is there a PHP library to auth SFTP using user, password AND private/public key? [closed]是否有使用用户、密码和私钥/公钥来验证 SFTP 的 PHP 库? [关闭]
【发布时间】:2022-01-22 09:33:20
【问题描述】:

我尝试了https://sourceforge.net/projects/phpseclib/,但没有成功。 所以如果有人知道其他方法,我会很高兴

在 cmd 上使用此命令可以连接,但我希望它在 PHP 上:

sshpass -p 密码 sftp -c aes128-cbc -i ~/dir_to_id_rsa.ppk -P 2222 user@host

PHP 5.6.3

【问题讨论】:

    标签: php ssh sftp lib


    【解决方案1】:

    我建议您使用 phpseclib v3,它可通过 Composer 安装并适用于 PHP 5.6。示例:

    <?php
    require __DIR__ . '/vendor/autoload.php';
    
    use phpseclib3\Net\SSH2;
    use phpseclib3\Crypt\PublicKeyLoader;
    
    $key = PublicKeyLoader::load(file_get_contents('privatekey'));
    
    $ssh = new SSH2('localhost');
    if (!$ssh->login('username', 'password', $key)) {
        throw new \Exception('Login failed');
    }
    

    如果您使用的是 phpseclib v1,那么除非您使用的是最新的 git 版本的 phpseclib,否则您拥有相关密钥和密码的顺序。

    无论如何,我会说发布您的 phpseclib 代码,我可以帮助您。

    【讨论】:

    • 感谢您的回复。我使用composer尝试了v3:1.我运行了这个命令:composer require phpseclib/phpseclib:~3.0 2.然后安装成功。 3. 执行您的代码时,我得到以下信息:警告:不支持在第 2 行的 /var/www/html/vendor/paragonie/constant_time_encoding/src/Base64.php 中声明 'strict_types' 解析错误:语法错误,意外': ',期待';'或第 45 行 /var/www/html/vendor/paragonie/constant_time_encoding/src/Base64.php 中的 '{' 我正在使用 composer 1 来安装它(已弃用),应该有问题吗?
    • @LeonardoSoares - 我的猜测是您使用更新版本的 PHP 执行了composer install,然后您的 Web 服务器正在运行。 phpseclib.com/docs/install 更详细地讨论了这个一般策略。也就是说,github.com/phpseclib/phpseclib/releases/download/3.0.12/… 刚刚添加到 phpseclib 3.0.12 版本中。试试看,看看它是否适合你。请务必在文件顶部输入require __DIR__ . '/vendor/autoload.php';
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2017-11-08
    • 2013-02-08
    • 2019-06-30
    • 2023-02-08
    • 2015-08-23
    相关资源
    最近更新 更多