2017-08-12 5 views
1

Ich muss nur ein privates/öffentliches Schlüsselpaar mit Python erstellen. Ich mag wie mit dem folgenden Befehl ssh-keygen das gleiche Ergebnis erhalten:Erstelle privaten/öffentlichen SSH-Schlüssel mit Python

ssh-keygen -t rsa -b 4096 -C "sample.key" -N "" -f "key" && mv "key" "key.opk" 

die folgenden erzeugt:

key.opk

-----BEGIN RSA PRIVATE KEY----- 
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 
-----END RSA PRIVATE KEY----- 

key.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCiKl/U9UtNQeZbjx2iLkNJrfPiAqBeC1TnWh81FfCF7cRCQy0hrcDFUbNZAp1KNaMl0mbubE247/l1uI4RfgyaHA3ItOXv4tOaEPL0zWMYCrrVgA2SeSohb6orff6TX5KvTg8KvKfXobM/cjx0G3T0LhyBIuy+1wzLEeOOUafOjMtVNrmPLVz3FGInrJC0cl0WiwkR6URqm5Yt0gqwkwBNpggNB8LGmUKWuOlwbF2eUEZMA4Fx8n/5L0b9QrscivMUy18ZVCRhlDTwO3GPeAsbH8aGnC3U2EG1Rdb2BHh1AEFyKsyQJ0ahXS1anDbKS1cGLzo0rJxcKKchM1QpXFOX3yb5tF/h2PyqCyO6eRPNnignt7RjR9BLaEfpbuOnRpj7gNmLjUePqahNpr3bpRtuXk1Qmwx+yWoNGetEcHYO4dx243k3ze5KD2otjAIvI+xhSBFNtTkdNa9vVHfZbkWosvhojpuR1KXqjEwctwAtqcEcLdgWWHJyXxBGVjy2z0B9Z+e8qy7zkhTGUKxHuwdBsMCBVLjfiopQlaGqDq3pYEvv1CJImCtlj0yPGkp+63nF/gtRTR1fI0W7/20x63Oy0zUq0IHP2BNr9ZcIyit2XnbFAVEK0UutBoybK4KWhe48D1ThcV0pq9bmrhfykRgZNAA2UOKEuzjR6TNnDgafHw== sample.key 

Bisher habe ich den folgenden Python-Code:

from OpenSSL import crypto 
k = crypto.PKey() 
k.generate_key(crypto.TYPE_RSA, 4096) 
print crypto.dump_privatekey(crypto.FILETYPE_PEM, k) 

Ausgang

-----BEGIN PRIVATE KEY----- 
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 
0LX5Cn0Lua+2YzXi4kWYLoQL6FVQug== 
-----END PRIVATE KEY----- 

Aber ich brauche auch den öffentlichen Schlüssel.

Antwort

3

Sie tat dies, um den privaten Schlüssel zu erhalten:

print crypto.dump_privatekey(crypto.FILETYPE_PEM, k) 

this Sie den öffentlichen Schlüssel zu erhalten:

print crypto.dump_publickey(crypto.FILETYPE_PEM, k)
+0

Dies wird nicht den öffentlichen Schlüssel im openssh-Format ausgeben. –

-1

Der einfachste Weg ist es, die Paramiko library zu verwenden. Installieren Sie mit

PIP3 installieren paramiko

(oder "BIB installieren paramiko" bei Verwendung von python2) Betrachten Sie dieses kurze Beispiel.

import sys 
import paramiko 

key = paramiko.RSAKey.generate(4096) 
print(key.get_base64()) # print public key 
key.write_private_key(sys.stdout) # print private key 
Verwandte Themen