Как выполнить c команды с php_seclib - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу загрузить файл в sftp с ключом аутентификации. Поэтому я использую phpseclib, установленный с composer. Я могу загрузить в sftp с аутентификацией с помощью пользователя и пароля, но с файлом ключа я не получаю ни результата, ни ошибки, ни чего-либо: (код php выполняется в оболочке unix, а не в проводнике)

#!/usr/bin/env php
<?php
    require_once '../vendor/autoload.php';
    use phpseclib\Crypt\RSA;
    use phpseclib\Net\SSH2;
    ...
    $loSftp                     = sftpConnection();
    function sftpConnection()
    {
        $ssh  = new SSH2('xxx.xxx.xxx.XXX');
        $key  = new RSA();
        $key->loadKey(file_get_contents('../keys/id_rsa'));
        if (!$ssh->login('MYUSERNAME', $key)) {
            exit('Login Failed');
        }
        echo PHP_EOL . "login done";
        echo PHP_EOL. 'connected: '. $ssh->isConnected();
        echo PHP_EOL. 'authenticated: '. $ssh->isAuthenticated();
        echo PHP_EOL. 'quitemode: '. $ssh->isQuietModeEnabled();
        echo PHP_EOL. 'test'. $ssh->exec('anycommandhere;', function($str) {
            echo '->'. $str;
        });
        return $ssh;
    }

Вывод:

Result:1
login done
connected: 1
authenticated: 1
quitemode:
test

мне нужно использовать -> exe c (? Потому что мне нужен ключевой файл), но какую бы команду я ни использовал 'ls -ahl' или 'pwd', не дает вывод, даже 'test' должен вывести ошибку (в конце концов я хочу использовать 'папку cd; положить myfile.txt') также я не могу использовать несколько exe c, как напечатано в руководстве, это приводит к ошибке:

Невозможно открыть канал в .... / vendor / phpseclib / phpseclib / phpseclib / Net / SSH2. php в строке 3842

что я делаю не так?

edit: (или ... есть ли другой phplib, который я могу использовать?) Edit2: вывод журнал:

https://pastebin.com/vBxUvCZT

...