Я ответил на этот вопрос три года назад и до сих пор даю тот же ответ.
Довольно редко серверы SFTP используют аутентификацию как по паролю, так и по открытому ключу. Я предполагаю, что у вас, скорее всего, есть закрытый ключ, защищенный паролем. Если это так, вы можете войти в систему следующим образом:
<?php
include('Net/SFTP.php');
include('Crypt/RSA.php');
$sftp = new Net_SFTP('www.domain.tld');
$key = new Crypt_RSA();
$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$sftp->login('username', $key)) {
exit('Login Failed');
}
print_r($sftp->nlist());
?>
Если действительно ваш сервер действительно выполняет следующие действия:
<?php
include('Net/SFTP.php');
include('Crypt/RSA.php');
$sftp = new Net_SFTP('www.domain.tld');
$key = new Crypt_RSA();
$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$sftp->login('username', $key) && !$sftp->login('username', 'password')) {
exit('Login Failed');
}
print_r($sftp->nlist());
?>
Обратите внимание, что это для версии 1.0. Если вы используете версию 2.0, код нужно будет несколько изменить. Поскольку вы не опубликовали свой собственный код, невозможно узнать, какую версию вы используете.
Кроме того, при просмотре этого поста 3,5-летней давности... похоже, что были проблемы, но теперь эти проблемы должны быть исправлены. Я без проблем выполнил многофакторную аутентификацию с помощью phpseclib. У вас есть основания полагать, что это не работает?
редактировать: для 2.0 вам нужно сделать это:
Для 2.0 вам нужно сделать это:
$sftp = new SFTP('www.domain.tld');
$key = new RSA();
//$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$sftp->login('username', $key) && !$sftp->login('username', 'password')) {
exit('Login Failed');
}
print_r($sftp->nlist());
person
neubert
schedule
29.08.2016