【发布时间】:2016-12-28 16:38:18
【问题描述】:
我需要从没有临时位置的私钥生成公钥,就像我们在 sshgen 中所做的那样。所以我使用这个。这里我将我的私钥作为输入传递(在执行时):
python codekey.py "-----BEGIN RSA PRIVATE KEY-----\nMIhhhhhhhhhhhhhhhh......Bidqt/YS3/0giWrtv+rMkJtv8n\nmirJ+16SZodI5gMuknvZG....................n-----END RSA PRIVATE KEY-----"
我的代码(codekey.py):
import sys
import io
from twisted.conch.ssh import keys
k = sys.argv[1]
rsa = keys.RSA.importKey(k)
key = keys.Key(rsa)
ssh_public = key.public().toString("openssh")
print ssh_public
错误:
Traceback (most recent call last):
File "codekey.py", line 7, in <module>
rsa = keys.RSA.importKey(k)
File "/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.py", line 638, in importKey
if lines[1].startswith(b('Proc-Type:4,ENCRYPTED')):
IndexError: list index out of range
动态地,我需要在执行我的 python 脚本时传递如上所示的密钥值,然后它将生成公钥。是否可能??,我不需要在本地存储,因为对于特权和密钥证券,不想要破解。
【问题讨论】:
-
看源码,好像不支持那种格式的私钥。此外,一旦您以可接受的格式获取密钥,您应该使用 conch.keys.Key.fromString() 导入密钥。
-
谢谢詹姆斯,但我错过了什么,我知道我在这行 rsa = keys.RSA.importKey(k) 中犯了一些错误。因为我需要将我的私钥作为输入而不是进入 pem 文件并从中提取公钥。有可能吗???
标签: python rsa ssh-keys pycrypto twisted.conch