我正在使用WinSCP .NET assembly通过SFTP上传文件,其中一个SessionOptions
properties是SshPrivateKeyPath
,这是我创建的私钥文件的位置的puttygen。该文件位于我PC上的C:
驱动器上:
SessionOptions sessionOptions = new SessionOptions
{
SshPrivateKeyPath = "C:\Users\blah\Documents\MyPrivateKey.ppk";
}
注意:我实际上已将文件路径作为配置设置,但您明白了。
这样做对我来说很有意义,因为当部署到测试/现场环境时,密钥及其位置会有所不同。此外,因为它不是项目的一部分,所以它不受源代码控制。
然而,我似乎无法找到一种标准方法,我担心我正在做的事情不是正确的事情。有什么建议吗?
答案 0 :(得分:0)
您的问题没有明确的答案。它基本上应该是您软件规范的一部分。
但要给出一些答案:
如果应用程序使用密钥进行内部使用,即最终用户不知道应用程序使用SSH / SFTP在某处发送某些数据,则密钥应该是应用程序的一部分。
在这种情况下,要么将密钥部署到应用程序安装文件夹,要么将其嵌入到二进制文件中。
请注意,这显然是一个安全问题。只要您的应用程序需要包含服务器的凭据(无论是私钥还是密码),最终用户就可以获取凭据并滥用它们。无论你多么努力地隐藏它们。
因此凭据必须具有尽可能少的权限。例如,如果应用程序将文件上载到服务器,则私钥(或密码)所针对的帐户应仅允许上载而不允许其他任何内容。它不应该允许修改现有文件。它甚至不应该允许列出现有文件。它应该有文件大小的限制。等等。如果你没有这方面的经验,你真的需要有经验的人设置这个。