PHP ssh2_auth_pubkey_file не работает с зашифрованным закрытым ключом

Я использую ssh2 в PHP, следующим образом:

$connection = ssh2_connect($host, $port);
ssh2_auth_pubkey_file($connection, $username, $pubKey, $privKey, $passphrase);

Это приводит к сообщению об ошибке:

ssh2_auth_pubkey_file(): Authentication failed for username using public key

Тем не менее, я могу нормально подключиться, используя sftp непосредственно в терминале.

$ sftp -oPort=PORT -i /path/to/private/key USER@HOST

(Команда sftp отвечает на запрос пароля и затем подключается.)

Я немного затрудняюсь с отладкой этого - команды ssh2 запрашивают и получают всю необходимую информацию для подключения, и я могу подключиться нормально, используя sftp непосредственно в терминале. В чем может быть проблема?

1 ответ

Решение

Я закончил тем, что бросил ssh2 для phpseclib.

Сначала загрузите закрытый ключ следующим образом:

$key = new Crypt_RSA();
$key->setPassword($passphrase);
$key->loadKey(file_get_contents($keyPath));

Затем войдите, используя ключ:

$sftp = new Net_SFTP($host, $port);
$loginResult = $sftp->login($username, $key);
Другие вопросы по тегам