Paramiko:从公钥字符串创建 PKey

Eti*_*rot 5 python ssh paramiko ssh-keys

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

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

PKey班被描述为“基类公共密钥”。然而问题是我无法弄清楚如何PKey仅用 ssh 公钥(即 string ssh-whatever AAblablabla)创建这样的对象。它有用私钥构建这样一个对象的方法,但显然我不希望客户端知道服务器的私钥。

我觉得我忽略了一些简单的事情,但我无法在网上找到有关这样做的信息;大多数教程都使用加载系统密钥的更高级别的SSHClientknown_hosts

Eti*_*rot 5

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

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