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