Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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:从公钥字符串创建PKey_Python_Ssh_Paramiko_Ssh Keys - Fatal编程技术网

Python Paramiko:从公钥字符串创建PKey

Python Paramiko:从公钥字符串创建PKey,python,ssh,paramiko,ssh-keys,Python,Ssh,Paramiko,Ssh Keys,我试图在较低的级别上使用SSH协议(即,我不想启动shell或任何东西,我只想传递数据)。因此,我直接使用Paramiko的类 我已经完成了服务器端的工作,但现在我正在为一些愚蠢的事情碰壁。对于要连接到服务器的客户端,传输将两个对象作为参数:客户端的私钥(pkey)和服务器的公钥(hostkey) 该类被描述为“公钥的基类”。但问题是,我不知道如何仅用ssh公钥(即字符串ssh-which-aablabla)创建这样一个对象。它有用私钥构建这样一个对象的方法,但显然我不想让客户端知道服务器的私钥

我试图在较低的级别上使用SSH协议(即,我不想启动shell或任何东西,我只想传递数据)。因此,我直接使用Paramiko的类

我已经完成了服务器端的工作,但现在我正在为一些愚蠢的事情碰壁。对于要连接到服务器的客户端,
传输
将两个对象作为参数:客户端的私钥(
pkey
)和服务器的公钥(
hostkey

该类被描述为“公钥的基类”。但问题是,我不知道如何仅用ssh公钥(即字符串
ssh-which-aablabla
)创建这样一个对象。它有用私钥构建这样一个对象的方法,但显然我不想让客户端知道服务器的私钥


我觉得我忽略了一些简单的事情,但我在网上找不到这样做的信息;大多数教程都使用更高级的方法来加载系统的
已知\u主机
键。

通过调用以下中描述的各个方法来解决此问题:

这多少有些道理


不过,我仍然愿意接受更好/更短的建议。就目前而言,
connect
方法的
hostkey
参数似乎不可用。

必须在另一个上下文中再次解决此问题,该上下文不仅仅用于密钥比较(用于签名检查)。这是正确的方法。回想起来,这很简单,但几乎没有记录在案

# For a public key "ssh-rsa AAblablabla...":
key = paramiko.RSAKey(data=base64.b64decode('AAblablabla...'))
key.verify_ssh_sig(..., ...)

添加到为传输客户端提供的解决方案中。下面是我向SSH客户端添加字符串公钥的解决方案:

my_pub_key = "xx.xx.xx.xx ecdsa-sha2-nistp256 mlzdHAyNT....."
my_host = my_pub_key.split(' ')[0]
password = 'myFavortitePassword'
username = 'myUsername'

ssh_client=paramiko.SSHClient()

host_key_policy = paramiko.MissingHostKeyPolicy()
host_key_policy.missing_host_key(ssh_client, my_host, my_pub_key)

ssh_client.connect(hostname= my_host
                            ,username=username
                            ,password=password
                            ,port=22
                            ,look_for_keys=False)

按照我的建议,将数据传递给PKey会起作用(事实并非如此),PKey甚至没有实现构造函数,并且RSAKey似乎没有按照预期接受数据参数。任何人都可以扩展此解决方案吗?我不明白答案。
my_pub_key = "xx.xx.xx.xx ecdsa-sha2-nistp256 mlzdHAyNT....."
my_host = my_pub_key.split(' ')[0]
password = 'myFavortitePassword'
username = 'myUsername'

ssh_client=paramiko.SSHClient()

host_key_policy = paramiko.MissingHostKeyPolicy()
host_key_policy.missing_host_key(ssh_client, my_host, my_pub_key)

ssh_client.connect(hostname= my_host
                            ,username=username
                            ,password=password
                            ,port=22
                            ,look_for_keys=False)