1

我有一个连接到 SFTP 服务器以传输日志文件的 C# 应用程序。该应用程序通过使用 WinSCP .NET 程序集连接到服务器来实现此目的。

如何安全地存储.ppk私钥文件,以使用户无法使用该文件自己访问 SFTP?

http://winscp.net/eng/docs/library#csharp

根据库引用的方式.ppk,可能无法避免.ppk在运行时将文件存储在本地磁盘上?

提前致谢。

4

2 回答 2

0

通常没有办法向最终用户隐藏(任何)应用程序拥有的任何类型的凭据。您只能使它们难以被发现,但是否值得付出努力是值得怀疑的。

您可以(并且应该做的)是确保凭据仅授予必要的访问权限。

因此,在您的情况下,请确保您使用私钥进行身份验证的帐户:

  • 只有写权限(没有读权限,甚至没有列表)
  • 并且磁盘配额低
  • 定期(或自动)监控任何异常活动

特别是关于 WinSCP .NET 程序集的私钥:

是的,它必须存储在磁盘上(即临时提取到临时文件夹)。尽管您可以使用密码对私钥进行加密。并在应用程序中硬编码密码(如果需要,可以混淆)。

SessionOptions.SshPrivateKeyPassphrase


另请参阅有关保护用于自动化的凭据的WinSCP 文章。

于 2015-07-21T07:42:13.897 回答
0

由于 WinSCP .NET 程序集正在调用命令行脚本接口,因此可能无法执行此操作。我是edtFTPnet/PRO的开发人员之一,它是各种文件传输协议(包括 SFTP)的本机 .NET 实现。我们的界面允许您使用字节数组设置私钥(请参阅SecureFTPConnection.ClientPrivateKeyBytes)。我们的产品不是免费的,但它应该能让您到达您想去的地方。

于 2015-07-22T00:11:28.033 回答