Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中提取后,如何在paramiko中包含私钥?_Python_Django_Ssh_Paramiko_Ssh Keys - Fatal编程技术网

Python 从字符串中提取后,如何在paramiko中包含私钥?

Python 从字符串中提取后,如何在paramiko中包含私钥?,python,django,ssh,paramiko,ssh-keys,Python,Django,Ssh,Paramiko,Ssh Keys,我正在与paramiko合作,我已经生成了我的私钥,并尝试了它,这很好。现在我正在使用基于Django的应用程序,我已经在数据库中复制了私钥 我将私钥保存在Django模型的charField中。我在以下代码中遇到问题: host = "192.154.34.54" username = "lovestone" port = 25 pkey = "------" # I saved my key in this string ssh = paramiko.SSHClient() ssh.set_

我正在与paramiko合作,我已经生成了我的私钥,并尝试了它,这很好。现在我正在使用基于Django的应用程序,我已经在数据库中复制了私钥

我将私钥保存在Django模型的
charField
中。我在以下代码中遇到问题:

host = "192.154.34.54"
username = "lovestone"
port = 25
pkey = "------" # I saved my key in this string
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server, username=username, port=port, pkey=?)
在这种情况下我该怎么办?当我将私钥存储在数据库的
string
中时,如何在
SSH.connect
中传递私钥

更新
甚至我也不能使用IO,即从数据库中获取密钥并将其写入文件,然后使用保存的文件对象并从私钥(cls,file,obj,password=None)传递到
在此处输入代码,因为这是基于web的应用程序,而不是通用密钥。每个用户都有自己的私钥。

您可以使用存储的私钥和的类方法创建类似文件的对象,因此您将创建实例并将其传递给方法。

如果无法将私钥保存到文件,这可能是使用StringIO的主要原因:StringIO获取一个字符串并将其转换为类似文件的对象,但不会将任何内容写入文件系统。当您只有一个字符串时,它允许您传入类似文件的对象:即,正是这样的情况

import paramiko, StringIO

key_string = "------" # I saved my key in this string
not_really_a_file = StringIO.StringIO(key_string)
private_key = paramiko.RSAKey.from_private_key(not_really_a_file)

not_really_a_file.close()
这对我很有用,你应该能够连接到这个对象:

client = paramiko.SSHClient()
client.set_missing_key_policy(paramiko.AutoAddPolicy())
client.connect(host="example.com", username="root", pkey=private_key)

@科尔约翰逊更新了question@Amit有这个问题的解决方案吗?谢谢你的回复,我有你的解决方案,但它对我不起作用:P你能看看问题的更新部分吗。