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);