.Net 6使用私钥连接SFTP

本文介绍了在.Net6项目中遇到使用Renci.SshNet库通过ssh-rsa私钥连接SFTP时遇到的‘opensshkeytype:ssh-rsaisnotsupported’错误。问题源于Renci.SshNet最新版仅支持ssh-ed25519格式的密钥。解决方案是将密钥转换为OpenSSH经典格式,通过ssh-keygen命令完成转换,并提供了转换及连接SFTP的代码示例。
摘要由CSDN通过智能技术生成

项目场景:

.Net 6使用私钥连接SFTP


问题描述

最近在工作中需要通过给定的私钥连接SFTP,我这边使用了Renci.SshNet来连接,程序报错“Renci.SshNet.Common.SshException:“openssh key type: ssh-rsa is not supported””


原因分析:

报错提示说 ssh-rsa不受支持,随后我在网上找了相关资料也说明了最新的SSH.NET2020.0.0仅支持ssh-ed25519键的OPENSSH格式


解决方案:

通过一下代码将密钥转换为经典的OpenSSH格式,如果密钥没有用密码短语加密,请使用""替代passphrase。
filename :密钥文件名
passphrase:密码短语

ssh-keygen -p -f filename -m pem -P passphrase -N passphrase

连接代如下:

PhysicalFileProvider physical = new PhysicalFileProvider(@"xxxx");   /// xxxx : 存放密钥的文件夹路径

var privateKey = physical.GetFileInfo("xxx.txt").PhysicalPath; /// xxx:密钥文件名

SFtpClient sftp = new(ip, port, username, privateKey, "");

var result= sftp.Connect();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值