我有一个连接到 SFTP 服务器以传输日志文件的 C# 应用程序。该应用程序通过使用 WinSCP .NET 程序集连接到服务器来实现此目的。
如何安全地存储.ppk
私钥文件,以使用户无法使用该文件自己访问 SFTP?
http://winscp.net/eng/docs/library#csharp
根据库引用的方式.ppk
,可能无法避免.ppk
在运行时将文件存储在本地磁盘上?
提前致谢。
我有一个连接到 SFTP 服务器以传输日志文件的 C# 应用程序。该应用程序通过使用 WinSCP .NET 程序集连接到服务器来实现此目的。
如何安全地存储.ppk
私钥文件,以使用户无法使用该文件自己访问 SFTP?
http://winscp.net/eng/docs/library#csharp
根据库引用的方式.ppk
,可能无法避免.ppk
在运行时将文件存储在本地磁盘上?
提前致谢。
通常没有办法向最终用户隐藏(任何)应用程序拥有的任何类型的凭据。您只能使它们难以被发现,但是否值得付出努力是值得怀疑的。
您可以(并且应该做的)是确保凭据仅授予必要的访问权限。
因此,在您的情况下,请确保您使用私钥进行身份验证的帐户:
特别是关于 WinSCP .NET 程序集的私钥:
是的,它必须存储在磁盘上(即临时提取到临时文件夹)。尽管您可以使用密码对私钥进行加密。并在应用程序中硬编码密码(如果需要,可以混淆)。
见SessionOptions.SshPrivateKeyPassphrase
。
另请参阅有关保护用于自动化的凭据的WinSCP 文章。
由于 WinSCP .NET 程序集正在调用命令行脚本接口,因此可能无法执行此操作。我是edtFTPnet/PRO的开发人员之一,它是各种文件传输协议(包括 SFTP)的本机 .NET 实现。我们的界面允许您使用字节数组设置私钥(请参阅SecureFTPConnection.ClientPrivateKeyBytes)。我们的产品不是免费的,但它应该能让您到达您想去的地方。