2016-07-07 7 views
1

Ich versuche, privaten und öffentlichen RSA-Schlüssel zu generieren, damit ich es an den Lieferanten weitergeben und eine Verbindung zu ihrem SFTP-Server herstellen kann. Ich benutze phpseclib für diese, aber was auch immer Schlüssel, den ich erstelle, erhalten die Lieferanten Fehlermeldung, dass der eingegebene SSH-Schlüssel ungültig ist und nicht unterstützt. Bitte geben Sie einen gültigen Schlüssel (OpenSSH oder PuTTYgen)phpseclib OpenSSH oder PuTTYgen Schlüsselgenerierung

ich versucht habe:

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

Dies ist Beispiel für generierten Schlüssel:

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 

Was mache ich falsch?

+0

Dies ist wirklich nicht so wie Programmierung Frage, aber welchen Teil senden Sie an sie? – Devon

+0

Der öffentliche Schlüssel, da ich eine Verbindung zu ihrem Server herstellen werde. Soll ich ihnen stattdessen den Private Key schicken? – Petrik

+0

Nein, der öffentliche Schlüssel ist korrekt, wurde aber nicht angegeben. – Devon

Antwort

0

PuTTY Schlüssel haben einen Private-MAC Abschnitt auf der Unterseite, die Ihre nicht hat. phpcyclib generierte PuTTY Schlüssel haben diesen Abschnitt in ihnen. Mein Code:

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

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

extract($rsa->createKey()); 

echo $privatekey; 

Der Ausgang:

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 

Dieser Schlüssel öffnet in puttygen gut.

Meine Vermutung: Sie entweder eine schlechte Kopie/Paste des Schlüssels, versehentlich einen Teil des Schlüssels auslassen, die unsere Fähigkeit behindert, Ihnen zu helfen, oder ... Sie verwenden eine modifizierte Version von phpseclib das entfernt die Private-MAC Zeile.

Ich meine, ich denke nicht einmal eine übermäßig veraltete Version von phpseclib würde das Weglassen dieser Zeile erklären, da ich denke, dass jede Version von phpseclib diese Zeile enthält.

+0

Hallo, Entschuldigung, ich habe die Private-MAC in meinem Post (jetzt bearbeitet) übersprungen. Es ist jedoch der öffentliche Schlüssel, der abgelehnt wird, da ich ihn nur an den Lieferanten sende. – Petrik

+0

Ich bin jetzt in der Lage, Ihren Schlüssel in Puttygen zu öffnen. Ich nahm Ihren öffentlichen Schlüssel und legte ihn in meine authorized_keys-Datei und war in der Lage, mit Ihrem privaten Schlüssel SSH in die Maschine zu jonglieren. Sie sagen "Lieferant erhalten Fehlermeldung". Was ist Ihr Lieferant? Wenn ich mich mit PuTTY mit dem von Ihnen geposteten Schlüssel einloggen kann, scheint es mir, dass Ihr Lieferant einen Fehler begangen hat. PuTTY ist die De-facto-Autorität im PuTTY-Format und wenn PuTTY den Schlüssel mag und Ihr Lieferant nicht ... Ihr Lieferant ist wahrscheinlich nicht so eine Autorität wie PuTTY. Oder auch OpenSSH, da OpenSSH auch den öffentlichen Schlüssel mag. – neubert

Verwandte Themen