首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用加密python模块加载openssh私钥?

如何使用加密python模块加载openssh私钥?
EN

Stack Overflow用户
提问于 2019-11-25 09:30:50
回答 2查看 2.6K关注 0票数 0

我得到了ValueError(“无法反序列化关键数据”)。如果我使用load_pem_private_key from cryptography.hazmat.primitives.serialization

要添加更多的上下文:

我的钥匙是从

-----BEGIN OPENSSH PRIVATE KEY-----

引发此错误的代码段。

代码语言:javascript
运行
复制
key = serialization.load_pem_private_key(data=private_key.encode(),
                                         password=None,
                                         backend=default_backend())

错误的跟踪显示

Backend=default_backend() ->在load_pem_private_key ->密码中返回backend.load_pem_private_key(数据、密码),在_load_key中返回load_pem_private_key -> self._handle_key_loading_error()

EN

回答 2

Stack Overflow用户

发布于 2019-11-26 05:38:03

pyca/加密主要使用OpenSSL,而主要支持OpenSSL支持的格式不包括OpenSSH的“新”格式。但是,它确实添加了OpenSSH公钥格式,因此询问他们添加OpenSSH私有信息并不荒谬。在此期间..。

如果您有OpenSSH,您可以使用ssh-keygen将OpenSSH的“新”格式转换回OpenSSH的“旧”格式,即OpenSSL的“传统”或“遗留”格式,方法是声称您希望更改密码--即使您将新密码与旧密码相同,或者由于您显然想要一个未加密的文件,就像旧密码一样使新密码为空:

代码语言:javascript
运行
复制
# OpenSSH 7.8 up 
ssh-keygen -f keyfile -p -m pem 
# below 7.8 
ssh-keygen -f keyfile -p # NOT -o 

或者,如果启动了PuTTY 0.69,puttygen也可以这样做,尽管UI在Windows和Unix之间有所不同。

杜普斯:

由ssh-keygen生成的SSH密钥不能被Paramiko识别:“非有效的RSA私钥文件”。 (Paramiko是Python中的SSH )

使用JSch时“无效私钥” (Java,但问题相同)

票数 1
EN

Stack Overflow用户

发布于 2021-10-28 17:33:03

从密码学版本3.0 (发布的2020-07-20 )开始,您现在可以使用函数加载存储在OPENSSH PRIVATE KEY PEM格式中的SSH私钥:

代码语言:javascript
运行
复制
$ ssh-keygen -t ed25519 -f demo_keypair -N 'example-passphrase' -C ''
$ python -c '
from cryptography.hazmat.primitives.serialization import load_ssh_private_key
from hashlib import sha1
key = load_ssh_private_key(open("demo_keypair", "rb").read(), b"example-passphrase")
print(sha1(key.sign(b"demo data")).hexdigest())
'
df551fcad0a0e288f0f92ca9e4876eb57a483c27

请注意,要加载受密码保护的密钥,必须安装模块 (版本3.1.5或更高版本);不幸的是,文档没有明确说明这一点,但是如果没有安装bcrypt,您得到的错误消息相当清楚:

代码语言:javascript
运行
复制
cryptography.exceptions.UnsupportedAlgorithm: Need bcrypt module

您可以使用额外的sshbcrypt作为依赖项拉进来:

代码语言:javascript
运行
复制
pip install cryptography[ssh]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59029092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档