Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从WinSCP.NET程序集连接获取SSH主机密钥_Vb.net_Winscp_Winscp Net - Fatal编程技术网

Vb.net 从WinSCP.NET程序集连接获取SSH主机密钥

Vb.net 从WinSCP.NET程序集连接获取SSH主机密钥,vb.net,winscp,winscp-net,Vb.net,Winscp,Winscp Net,我正在使用WinSCP.NET汇编构建一个基于SFTP的应用程序 我似乎缺少的一个“关键”点是,除非用户能够提供SSH密钥,否则应用程序似乎无法使用SSH密钥验证其连接的主机 正如我们所知,通常情况下并非如此,我希望用户在不使用第三方程序获取SSH密钥的情况下仍然使用SSH密钥 在建立连接之前,您需要设置: ConnectionOption.SshHostKeyFingerprint= SSHkeyString 或 如果您还不知道密钥是什么,那么您就别无选择,只能选择后者,我假设您可以在建立连

我正在使用WinSCP.NET汇编构建一个基于SFTP的应用程序

我似乎缺少的一个“关键”点是,除非用户能够提供SSH密钥,否则应用程序似乎无法使用SSH密钥验证其连接的主机

正如我们所知,通常情况下并非如此,我希望用户在不使用第三方程序获取SSH密钥的情况下仍然使用SSH密钥

在建立连接之前,您需要设置:

ConnectionOption.SshHostKeyFingerprint= SSHkeyString

如果您还不知道密钥是什么,那么您就别无选择,只能选择后者,我假设您可以在建立连接后通过调用此函数来获取SSH主机密钥的属性:

MessageBox.Show(ConnectionOption.SshHostKeyFingerprint)
但这将返回一个空结果

我查看了.NET连接器的文档,但似乎没有办法检索所连接服务器的SSH密钥

似乎还有其他一些库具有此功能,但我发现的那些库是商业许可的。我想,如果我能找到一个具有这种功能的常规SSH连接器(没有ftp),也可以工作——只是为了获得SSH密钥

所以我的问题是
如何使用WinSCP.NET程序集从连接的服务器检索未知SSH密钥?

是否有另一个免费提供的库使我能够检索所述SSH密钥?

您可以使用来实现交互式主机密钥验证

有C#和PowerShell的例子。

使用VB.NET重新实现它应该不难。

如果用户不知道密钥,如何验证密钥?如中所述,用户通常在首次连接到密钥之前无法获取密钥。我知道这不是最安全的,但不是完全禁用主机密钥检查,因为用户不知道它;如果在将来的连接中发生更改,用户至少能够收到通知。好吧,既然WinSCP缺少我特别想要的这个功能,那么有没有其他库可以用来获取SSH密钥?我的应用程序不以交互方式使用sFTP,只是设置要传输的内容。另外,感谢您对属性名称的更正,我已经更新了这个问题。@TheodPerson WinSCP现在已经支持这个问题了。请看我的最新答案。非常感谢。这是非常有用的。我希望我能在这里再投你一票:)
MessageBox.Show(ConnectionOption.SshHostKeyFingerprint)