2016-07-07 3 views
1

Я пытаюсь создать частный и открытый ключ RSA, поэтому я могу передать его поставщику и подключиться к их SFTP-серверу. Я использую phpseclib для этого, но независимо от того, какой ключ я создаю, поставщик получает сообщение об ошибке, в котором указано, что введенный ключ SSH недействителен и не поддерживается. Пожалуйста, введите действительный ключ (OpenSSH или PuTTYgen)phpseclib Генерация ключей OpenSSH или PuTTYgen

Я пробовал:

<?php 
include('Crypt/RSA.php'); 

$rsa = new Crypt_RSA(); 

$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PUTTY); 
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH); 

//define('CRYPT_RSA_EXPONENT', 65537); 
//define('CRYPT_RSA_SMALLEST_PRIME', 982451653); // makes it so multi-prime RSA is used 
extract($rsa->createKey()); // == $rsa->createKey(1024) where 1024 is the key size 

echo $privatekey; 
echo "\n\n\n"; 
echo $publickey; 
?> 

Это пример сгенерированный ключ:

PuTTY-User-Key-File-2: ssh-rsa 
Encryption: none 
Comment: phpseclib-generated-key 
Public-Lines: 4 
AAAAB3NzaC1yc2EAAAADAQABAAAAgQDFkOp+otBkW4gkiNZ9xbWrWjzAok+iD+gc 
GESAyE3FLMFteQtJbpHlsix2eeBTCTjgPXiaRHABtzeqyr6nuO44uXLotJ4WVHOJ 
5G75QFWZL0j61LLWZmHB7oxF2Vdt7BFAINu/UbGAhBVRdBaNDRxKSW/10KToOC+b 
1yhEAR9MXw== 
Private-Lines: 8 
AAAAgEZ1qXvieynfjw1glAalFWZ4N0SIXpgwzhn++adoSHwyuwVc7w6QVY4y3jKe 
wsc6ecNXiQSTtdKW0k6iIh7VEHggCwMjVIi752jYhiV2wc2gSaP5PnjYyrRpsVb8 
JjXZToYeRvWNvNPh4aS4x3CTSpB4BLcZ+7V451bNUy84XIM5AAAAQQDm+1RLu5o3 
NmUazpJT3a/KpEtfO5Fg4RuBgFu0dXM6+lfueFUMxpVJ1JY1eWRtCD7gr0EqYC3U 
HtNxuOoBk1pdAAAAQQDa9wkbrpQparL9GAoqWU4rP2bjBZ9Nd6fVozswgzGU4cUx 
nuxvirPdQfwBAKk8czSH1bY64NVfNF8nhNXCTS3rAAAAQC3Sse80v03IRDg/gT29 
VDeCj0P7chs7A0yQ3i4O/jf+s76hBGmpnif1bkkXENfue3Rswxsbq7CVy6Tww7W1 
BFk= 
Private-MAC: 89412f0a7977af0b8bd29bb67522628b4ab49ca8 



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDFkOp+otBkW4gkiNZ9xbWrWjzAok+iD+gcGESAyE3FLMFteQtJbpHlsix2eeBTCTjgPXiaRHABtzeqyr6nuO44uXLotJ4WVHOJ5G75QFWZL0j61LLWZmHB7oxF2Vdt7BFAINu/UbGAhBVRdBaNDRxKSW/10KToOC+b1yhEAR9MXw== phpseclib-generated-key 

Что я делаю неправильно?

+0

Это действительно не вопрос программирования, но какая часть вы отправляете им? – Devon

+0

Открытый ключ, поскольку я буду подключаться к их серверу. Должен ли я отправлять им секретный ключ? – Petrik

+0

Нет, открытый ключ правильный, но он просто не был указан. – Devon

ответ

0

Ключи PuTTY имеют раздел Private-MAC внизу, который у вас нет. Созданные phpseclib ключи PuTTY имеют этот раздел в них. Мой код:

<?php 
include('Crypt/RSA.php'); 

$rsa = new Crypt_RSA(); 
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PUTTY); 

extract($rsa->createKey()); 

echo $privatekey; 

Выход:

PuTTY-User-Key-File-2: ssh-rsa 
Encryption: none 
Comment: phpseclib-generated-key 
Public-Lines: 4 
AAAAB3NzaC1yc2EAAAADAQABAAAAgQC61/qDBnv1Fhz7QUe5Bq9gBrUlS/sJZxiv 
CR5/a1ZlaTbb+V9ayK/f/7YvF/m9OnLE8qVQPdrGQ511xdk9WSO5LABNLReOIT/t 
ylbtM17Cl3If5BHm1jXK5Edxi5GPdOTfI3UJ2puoGsOxunKtDKflbbkIvPyoV/BJ 
W5+bZE6Jgw== 
Private-Lines: 8 
AAAAgELxiS8SzqzkTGP1YrY3X/R+0r5XN82Jo71q/gNXOPBCv0YXVgPX7bPLEcJT 
y8XxwBcyfOqADveEWFFPHuOtIW/lSui1WxXxxyhP3L+0Utt9SzhW8PKeciAAJjLg 
EzvQT/njSsPL9dFkfci6Ayc6cilvodCWhuJO74b8FPpqHQ15AAAAQQDcsrV3p5Du 
mFJ9fNvu3yer8poBaAU5QqsKgyMl7rnEnExEfIbo0utVUh2GYHeHRFJbTpErm8ia 
+IgV3Mo50OCVAAAAQQDYuvoI7jbRltk/YvwjS1+nE+BaHlArnF5wQwZiKvxJxSzo 
lF8nn+HTRBo9eGflCCBN5ZX4liq3VUFN1Eb/m0O3AAAAQQCNlBIwB1SorqE/7M8G 
VfJaJZScayO8HUSFGDk6ufXV0HquvaRIUGKEuezoTZU/tru+Q9CRMomSH3gFLrUj 
f7s8 
Private-MAC: e00a2fc04cf1d1acfa0f148d606f0d590e90f844 

Этот ключ открывает только штрафом в PuTTYgen.

Мое предположение: вы либо сделали плохую копию/вставку ключа, случайно опуская часть ключа, что помешает нам помочь вам, или ... вы используете модифицированную версию phpseclib который удаляет линию Private-MAC.

Я имею в виду, что я даже не думаю, что чрезмерно устаревшая версия phpseclib объясняет отсутствие этой строки, поскольку я думаю, что каждая версия phpseclib включает эту строку.

+0

Привет, извините, я пропустил Private-MAC в своем сообщении (теперь отредактирован). Однако это открытый ключ, который отвергается, поскольку я отправляю его только поставщику. – Petrik

+0

Теперь я могу открыть ваш ключ в puttygen. Я взял ваш открытый ключ и поместил его в файл authorized_keys и смог SSH на машине с вашим личным ключом. Вы говорите «сообщение об ошибке получения поставщика». Какой у вас поставщик? Если я смогу войти в систему с PuTTY с указанным вами ключом, мне кажется, что ваш поставщик ошибается. PuTTY является фактическим авторитетом в формате PuTTY, и если PuTTY любит ключ, а ваш поставщик не ... ну, ваш поставщик, вероятно, не такой авторитетный, как PuTTY. Или даже OpenSSH, поскольку OpenSSH тоже нравится открытый ключ. – neubert

Смежные вопросы