我可以将ssh / scp与存储在DB中的私钥一起使用吗?

时间:2012-09-12 23:41:14

标签: python database ssh ssh-keys

我正在开发一个python / django应用程序,除其他外,需要通过ssh / scp将文件推送到另一个主机。为了安全起见,我想使用基于密钥的身份验证,但我想将私钥存储在django数据库中,而不是存储在文件系统中。有没有办法做到这一点,没有从数据库中检索密钥,写入临时文件,然后指定该文件?

1 个答案:

答案 0 :(得分:0)

使用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?