Не можете войти используя phpseclib с ключами RSA?

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

<?php
include 'Crypt/RSA.php';
include 'Net/SSH2.php';

$key = new Crypt_RSA();
$key->loadKey('key');
echo file_get_contents('key');

$ssh = new Net_SSH2('srv-test');
if (!$ssh->login('user', $key)) {
exit('Login Failed');
}
echo $ssh->exec('ls');
?>

и вывод

$ php test_key.php

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAqcmSbXneDVQsMe/kjKxkaaqKPTN5GUawoeknWL20exQN4HqCAklE
FMUcOd48ypAj4CZc9baGtjbpC3zCRDRcatJQTWbsP/P4vSe7728JPcVa0PVmqyi0
YF5rRAnkcNVA1X4EGriYhLYGTjeEZMjvrubBBgAsYUaRbyYBauSpp7GqAP3/sVk6
YeNRrs8nOLFYdp1bAmAlSemzixYWQ466jeHAfevD06WwSLwD1fh6Dfyt5kvsUZGp
7KldtHwBKg/YE947YSwIFkUVOQkyx7+7BgnDhTo8sgiY4in0YK9PIC5o/gBnBqw9
eBUjNFHTQSv8gRTEP68NfYipgy2VmcNPAQIDAQAB
-----END RSA PUBLIC KEY-----

Login Failed

key файл был создан с

ssh-keygen -f .ssh/id_rsa.pub -e -m pem

(формат по умолчанию тоже не работает) и я могу нормально войти с id_rsa.pub ключевой файл с консоли. Что мне не хватает? Спасибо

1

Решение

Из вашего поста:

$key = new Crypt_RSA();
$key->loadKey('key');
echo file_get_contents('key');

$key->loadKey('key'); не ожидает имя файла — он ожидает фактический ключ. Так что если вам нужно сделать file_get_contents('key') чтобы показать фактический ключ, то вам придется сделать $key->loadKey(file_get_contents('key')),

Также вам необходимо поставить loadKey с закрытым ключом — не открытым ключом. Похоже, вы не потому, что ключ, который вы опубликовали -----BEGIN RSA PUBLIC KEY----- в этом. Закрытый ключ необходим, потому что именно так вы подтверждаете свою личность. Вы подписываете с закрытым ключом, сервер проверяет с открытым ключом.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]