Wie benutze paramiko.RSAKey.from_private_key ()?

8

Ich bin paramiko neu, irgendeine Idee, wie ich die Funktion paramiko.RSAKey.from_private_key () verwenden kann?

Ich weiß, dass es eine from_private_key_file () gibt, aber ich bin daran interessiert, eine Funktion zu verwenden, um einen privaten Schlüssel (wie unten) zu analysieren und diesen privaten Schlüssel für SSHClient zu verwenden.

Privater Schlüssel (Beispiel)

%Vor%

Code, den ich ausführen wollte:

%Vor%

Vielen Dank.

    
Mickey Cheong 01.04.2012, 09:39
quelle

5 Antworten

4

from_private_key() nimmt anscheinend ein Dateiobjekt:

  

from_private_key (cls, file_obj, password = None)

     

Erstellen Sie ein Schlüsselobjekt, indem Sie einen privaten Schlüssel aus einem Dateiobjekt (oder einem dateiähnlichen Objekt) lesen. Wenn der private Schlüssel verschlüsselt ist und das Kennwort nicht None lautet, wird das angegebene Kennwort zum Entschlüsseln des Schlüssels verwendet (andernfalls wird PasswordRequiredException ausgelöst).

     

Parameter:

     

file_obj (Datei) - die Datei, von der gelesen werden soll   password (str) - ein optionales Passwort, mit dem der Schlüssel entschlüsselt werden kann, wenn er verschlüsselt ist.

     

Gibt zurück: PKey

     

ein neues Schlüsselobjekt basierend auf dem angegebenen privaten Schlüssel

     

Erhöhungen:

     

IOError - wenn beim Lesen des Schlüssels ein Fehler aufgetreten ist

     

PasswordRequiredException - wenn die Datei mit dem privaten Schlüssel verschlüsselt ist und das Passwort None

lautet      

SSHException - wenn die Schlüsseldatei ungültig ist

Wenn Sie also einen Schlüssel als String verwenden möchten, können Sie StringIO verwenden, etwa so:

%Vor%

Ich habe das jedoch nicht getestet.

    
Lev Levitsky 01.04.2012 09:49
quelle
4

Levs Methode hat bei mir funktioniert:

%Vor%     
Paul Zielinski 05.12.2013 19:26
quelle
1

Hier ist 'duck typing' praktisch - es muss keine Ente sein (= Datei), es muss nur BEHAVE sein.

Ein kleines Experiment zeigt, dass jedes Objekt, das eine gültige readlines () -Methode hat, in Ordnung ist.

Ich habe es gefälscht mit:

%Vor%

Das ist unglaublich hacky, aber es funktioniert.

Wenn Sie myfakefile (keystring) aufrufen, erstellt das myfakefile.readlines, was den (geteilten) Inhalt von keystrings zurückgibt.

Dann gibt es die Funktion zurück.

Dieselbe Funktion wird an from_private_key übergeben. from_private_key, denkt, es ist eine Datei, ruft myfakefile.readlines () auf. Dies ruft die neu erstellte (lambda) -Funktion auf, die die Art von ding zurückgibt, die Sie von file.readlines () erwarten - oder zumindest nah genug.

Beachten Sie, dass das Speichern der Ergebnisse nicht wie erwartet funktioniert:

%Vor%

Es gibt robustere Methoden, um das so zu machen, wie es sollte, aber es lohnt sich nicht - verwenden Sie einfach StringIO, wenn Ihre Anforderungen komplizierter sind.

    
AMADANON Inc. 14.07.2016 04:12
quelle
0

Das sollte es tun:

%Vor%     
Quinn Weber 25.01.2017 21:51
quelle
-1

Sehr alte Frage, aber für den Fall, dass es einer unglücklichen Seele hilft: Mein Problem bestand darin, einen neuen Schlüssel mit Standardoptionen zu erzeugen, indem ich

benutze

ssh-keygen -t rsa

Mein vorheriger Schlüssel wurde mit

generiert

ssh-keygen -t rsa -b 4096 -a 100

worüber sich paramiko ebenso beschwert hat wie bei OP.

    
user1093043 26.08.2016 06:17
quelle

Tags und Links