我试图在低级别使用 SSH 协议(即我不想启动 shell 或任何东西,我只想传递数据)。因此,我正在使用Paramiko的Transport http://www.lag.net/paramiko/docs/paramiko.Transport-class.html直接上课。
我已经完成了服务器端,但现在我遇到了一些愚蠢的事情。为了让客户端连接到服务器,Transport
's connect method http://www.lag.net/paramiko/docs/paramiko.Transport-class.html#connect作为两个PKey http://www.lag.net/paramiko/docs/paramiko.PKey-class.html对象作为参数:客户端的私钥(pkey
)和服务器的公钥(hostkey
).
The PKey http://www.lag.net/paramiko/docs/paramiko.PKey-class.html类被描述为“公钥的基类”。但问题是我不知道如何创建这样一个PKey http://www.lag.net/paramiko/docs/paramiko.PKey-class.html仅使用 ssh 公钥(即字符串ssh-whatever AAblablabla
)。它具有从私钥构建此类对象的方法,但显然我不希望客户端知道服务器的私钥。
我觉得我忽略了一些简单的事情,但我无法在网上找到有关执行此操作的信息;大多数教程都使用更高级别的SSHClient class http://www.lag.net/paramiko/docs/paramiko.SSHClient-class.html它加载系统的known_hosts
keys.
必须在另一个上下文中再次解决这个问题,这不仅仅是为了密钥比较(它是为了签名检查)。这是正确的方法。回想起来,这非常简单,但几乎没有记录。
# For a public key "ssh-rsa AAblablabla...":
key = paramiko.RSAKey(data=base64.b64decode('AAblablabla...'))
key.verify_ssh_sig(..., ...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)