使用Renci.SshNet加载密钥文件报错aes256-ctr不支持求解决
解决Renci.SshNet不支持aes256-ctr加密的私钥文件问题
我在使用Renci.SshNet的PrivateKeyFile加载私钥文件时,遇到了如下错误:
Renci.SshNet.Common.SshException: 'cipher name aes256-ctr for openssh key file is not supported'
我已经尝试了两种初始化方式:
var keyFile = new PrivateKeyFile(privateKeyPath);
以及:
var keyFile = new PrivateKeyFile(privateKeyPath, passphrase);
都无法解决这个问题,求各位帮忙。
可行的解决方法
重新生成兼容格式的私钥
用OpenSSH生成Renci.SshNet支持的私钥文件,指定PEM格式和兼容的加密算法(比如aes256-cbc):ssh-keygen -t rsa -b 2048 -N "你的密码" -m PEM -f ./new_private_key生成后直接用这个新密钥替换原来的文件即可。
升级Renci.SshNet包
旧版本的Renci.SshNet确实不支持aes256-ctr加密的密钥,去NuGet把包更新到最新稳定版,大概率能解决兼容问题。转换现有密钥的加密方式
如果不想重新生成密钥,可以通过OpenSSH转换现有密钥的加密算法:- 先导出未加密的私钥(注意这一步会暴露明文密钥,操作完记得删除临时文件):
openssl rsa -in ./old_private_key -out ./temp_unencrypted_key - 用支持的算法重新加密:
openssl rsa -in ./temp_unencrypted_key -aes256 -out ./new_encrypted_key
之后在代码里加载这个
new_encrypted_key文件即可。- 先导出未加密的私钥(注意这一步会暴露明文密钥,操作完记得删除临时文件):
内容的提问来源于stack exchange,提问作者VictorAmorim
相关产品推荐
相关产品推荐

