首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用非基于文件的密钥的SFTP

问使用非基于文件的密钥的SFTP
EN

Stack Overflow用户
提问于 2010-12-04 06:35:28
回答 4查看 1.3K关注 0票数 1

我计划编写一些软件,使用带有公钥/私钥身份验证的SFTP将文件上传到服务器。我想知道人们如何推荐管理密钥(特别是私钥)。

我的目标平台是装有C#或C++的Windows。我看过很多库:

C#

(免费/开放)

SharpSSH

Granados

(商业广告)

Rebex

C++

libcurl/OpenSSH

所有这些似乎都需要将私钥存储在文件系统上,出于安全原因,我倾向于避免使用私钥。我也不愿意自己实现身份验证,尽管我认为这是一种选择。我的问题:

有没有办法直接从内存中提供这些库(或者我可能忽略的任何库/API)中的键值,而不是从文件中加载?

如果没有,管理这些密钥文件的推荐方式是什么?除了密码加密和严格的访问控制之外,还应该做其他事情来保护密钥文件吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-04 15:10:10

我从未使用过Granados,但是该库的SSH2UserAuthKey class有一个FromSECSHStyleStream方法,可以从任意的Stream (如果您想直接从内存加载密钥,可以是MemoryStream )加载用户的身份验证密钥。这似乎可以让您绕过文件系统来存储密钥。

Rebex.Net有一个可以从byte[]加载的SshPrivateKey class constructor;这也可以让您避开文件系统。

虽然我还没有检查其他库,但它们似乎都提供了从byte[]、MemoryStream或unsigned char*加载密钥的方法,以及直接从文件加载的方便方法。

但是,这些API并没有解决私钥实际如何存储的问题。您可以对其进行密码保护(这似乎是使用SSH私有密钥的一种相当常见的方法),或者使用ProtectedData class使用当前Windows用户的凭证对其进行加密。

票数 0
EN

Stack Overflow用户

发布于 2010-12-05 08:30:08

所有这些似乎都需要将私钥存储在文件系统上,出于安全原因,我倾向于避免这样做。

我认为您应该接受文件系统。诸如NTFS (作为Windows开发人员,您几乎肯定会使用它)这样的现代应用程序具有健壮的安全机制,这些机制可能比您(或我)设计的大多数替代机制都要好。NTFS有访问控制列表、加密等等--如果您不能信任您的文件系统来保护您的数据安全,那么您为什么还要关心网络流量呢?

我会注意到,有一些特定的情况可能会阻止我做上面说的事情,但我没有看到原始帖子中提到的任何一个。

票数 3
EN

Stack Overflow用户

发布于 2010-12-04 16:13:59

SecureBlackbox (我们的产品)的SFTP classes允许您从任何流或字节数组加载密钥。此外,它们还允许您以各种格式生成和转换SSH密钥。

如果您有问题,我们为您提供通过Forum和HelpDesk评估用户的支持

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4350484

复制
相关文章

相似问题

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