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.
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
lautetSSHException - 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:
Ich habe das jedoch nicht getestet.
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.
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.