我正在开发一个从第三方SFTP服务器导入数据的例程。此服务器使用WinSCP创建SFTP连接,并使用SSH私钥进行连接,而不是用户名和密码。所以我在脚本任务中创建如下所示的连接:
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = ftpSite,
UserName = username,
Password = password,
SshHostKeyFingerprint = sshKey,
SshPrivateKeyPassphrase = "mypassword",
SshPrivateKeyPath = @"C:\path\to\private.ppk"
};
我很高兴将私钥路径存储在数据库表(包含我的connectoin设置)中,但我想存储一些加密的SshPrivateKeyPassphrase。我最初在想是否可以创建一个加密变量,所以如果你看一下包的xml,它就不会直接暴露密码,但是我可以在代码中引用变量来将密码传递给连接。
我还在考虑创建一个虚拟连接,看看我是否可以参考连接并在代码中获取密码,但它似乎有点软糖。
软件包所处的解决方案是密码,我只是试图覆盖所有基础,所以如果有人能够访问不应该访问的软件包,他们就不会获得私钥密码短语因为这会给我们带来各种各样的问题。