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