Я хочу загрузить файл в 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