Я пытаюсь войти на сервер SSH, используя сертификат клиента ECDSA на PHP. Я использую ветку master dev для phpseclib, которая включает поддержку ECDSA с октября 2018 года.
Я взял пример сценария для входа на сервер ssh и адаптировал его для использования моего сертификата:
use phpseclib\Crypt\ECDSA;
use phpseclib\Net\SFTP;
$sftp = new SFTP('server.ssh');
$key = new ECDSA();
echo $key->load(file_get_contents('/path/to/clientkey'));
if (!$sftp->login('username', $key)) {
print_r($sftp->getErrors());
echo 'Login Failed';
} else {
echo 'Login Succeeded!';
}
Этот код выдает следующее практически мгновенно (так что нет времени ожидания):
1 // so the key loads successfully
Array
(
) // no errors that we know of
Login Failed // but no success either
Те же данные для входа в систему работают с использованием командной строки sftp на том же компьютере. Удаленный сервер поддерживает только SFTP-соединения, поэтому я не могу попробовать обычное SSH2-соединение.
Это должно работать еще? Это так должно работать, или в моем коде ошибка?
Задача ещё не решена.
Других решений пока нет …