【发布时间】:2012-09-06 00:36:30
【问题描述】:
我正在开发一个 python/django 应用程序,除其他外,它需要通过 ssh/scp 将文件推送到另一台主机。为了安全起见,我想使用基于密钥的身份验证,但我想将私钥存储在 django 数据库中,而不是文件系统中。有没有办法做到这一点,除了从数据库中检索密钥,写入临时文件,然后指定该文件?
【问题讨论】:
标签: python database ssh ssh-keys
我正在开发一个 python/django 应用程序,除其他外,它需要通过 ssh/scp 将文件推送到另一台主机。为了安全起见,我想使用基于密钥的身份验证,但我想将私钥存储在 django 数据库中,而不是文件系统中。有没有办法做到这一点,除了从数据库中检索密钥,写入临时文件,然后指定该文件?
【问题讨论】:
标签: python database ssh ssh-keys
使用 paramiko,您可以做一些技巧来避免将密钥写入文件系统。 使用paramiko connect,您可以指定一个 pkey 作为参数。
PKey 对象有一个 from_private_key 方法,该方法接受一个文件对象(StringIO 与您从数据库中提取的密钥)类似:
f = StringIO.StringIO()
# retreive your key from db
f.write(your_key)
private_key = paramiko.RSAKey.from_private_key(f)
ssh.connect(server, username=username,pkey=private_key)
How to include the private key in paramiko after fetching from string?
【讨论】: