【发布时间】:2015-01-19 20:28:52
【问题描述】:
我正在使用 WinSCP .NET 程序集构建基于 SFTP 的应用程序。
我似乎缺少的一个“关键”事情是,除非用户能够提供,否则应用程序似乎无法使用 SSH 密钥验证它所连接的主机。
我们知道这通常不是这种情况,我希望在用户不使用 3rd 方程序获取它的情况下仍然使用 SSH 密钥。
在建立连接之前,您需要设置:
ConnectionOption.SshHostKeyFingerprint= SSHkeyString
或
ConnectionOptions.GiveUpSecurityAndAcceptAnySshHostKey = True
如果您不知道密钥是什么,但您别无选择执行后者,我假设您可以通过在建立连接后调用它来获取 SSH 主机密钥的属性:
MessageBox.Show(ConnectionOption.SshHostKeyFingerprint)
但这会返回一个空结果。
我查看了 .NET 连接器的文档,似乎没有办法检索您连接到的服务器的 SSH 密钥。
似乎还有一些其他库似乎具有此功能,但我发现的那些是商业许可的。我想即使是具有这种能力的常规 SSH 连接器(无 ftp)也可以工作 - 只是为了获取 SSH 密钥 - 如果我能找到一个。
所以我的问题是
如何使用 WinSCP .NET 程序集从连接的服务器检索未知的 SSH 密钥?
或
是否有另一个免费可用的库可以让我检索所述 SSH 密钥?
【问题讨论】:
-
如果用户不知道密钥,如何验证密钥?
-
如winSCP FAQ 中所述,用户在首次连接之前通常无法获取密钥。我知道这不是最安全的,而是因为用户不知道而完全禁用对主机密钥的检查;如果将来的连接发生变化,至少可以通知用户。
标签: vb.net winscp winscp-net