.net - 使用 SSH 公钥/私钥连接到 sFTP 服务器。错误 {Invalid private key file.} 使用 SSH.NET
问题描述
首先,我使用生成的密钥
var keygen = new SshKeyGenerator.SshKeyGenerator(2048);
var privateKey = keygen.ToPrivateKey();
var publicSshKey = keygen.ToRfcPublicKey();
私钥生成以下字符串:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBA... etc.
-----END RSA PRIVATE KEY-----
我现在正在尝试创建一个新的 Renci.SshNet.PrivateKeyFile 对象以用于创建 SftpClient 对象。我尝试以多种方式加载 RSA 私钥字符串,类似于:
using (var keyStream = new MemoryStream(Encoding.ASCII.GetBytes(ReturnKey())))
{
var privateKy = new PrivateKeyFile(keyStream);
}
ReturnKey() 方法只返回一个私钥字符串 -----BEGIN RSA PRIVATE KEY----- 等。我尝试过使用和不使用“-----BEGIN RSA 和 ---- -End RSA”,我得到相同的结果:
错误 {无效的私钥文件。}
我有连接到 sFTP 服务器的所有详细信息,即用户、DNS、端口、路径。生成了公钥,我只是无法加载私钥作为开始。
这是我第一次必须使用 SSH 连接到 sFTP。任何帮助将不胜感激,谢谢。
解决方案
看起来这是我添加私钥文本的方式;相反,我将密钥保存到 txt 文件并直接加载。我认为 ReturnKey() 函数的字符串中可能还有其他字符、制表符/返回,所以如果我添加完整的代码会有所帮助。
推荐阅读
- .net - .NET - 确保跨线程事件处理在处理表单后不会引发异常
- python-3.x - 如何更新,然后用 Python 和 DBUtils PersistentDB 选择更新的数据?
- angular - 传单 divIcon 未以角度显示在地图上
- json - 无法从 DynamoDB 数据库中为 Alexa 技能正确检索读取的 JSON 数据
- php - php中注册页面的数据库中的值未更新
- php - Codeigniter 复杂的 MySQL 查询
- python - 给定一个列表,如果存在,则从列表中删除索引 0,4,5
- opencv - Nim 无法打开“opencv/highgui”
- c# - 为什么我在使用 XmlDocument 加载 XML 文件时出现错误?
- php - 嘲弄不嘲弄阶级的属性