为什么在使用 WinSCP .NET 程序集时此 SSH 主机密钥指纹与模式不匹配

Why does this SSH host key fingerprint not match the pattern when using WinSCP .NET assembly

我正在尝试使用 WinSCP 和 PowerShell 连接到 SFTP 服务器,但遇到了以下问题

Error: SSH host key fingerprint "ssh-rsa 2048 ABCDE+I9v1+pLxkhZkod6yAbEh0o7a8wlSsI+ABCDEF" does not match pattern /((ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-nistp(256|384|521))( |-))?(\d+ )?(([0-9a-f]{2}(:|-)){15}[0-9a-f]{2}|[0-9a-zA-Z+/]{43}=)(;((ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-nistp(256|384|521))( |-))?(\d+ )?(([0-9a-f]{2}(:|-)){15}[0-a-f]{2}|[0-9a-zA-Z+/]{43}=))*/

引号字符串中的ABCDE和ABCDEF只是我遮盖了指纹

我检查了现有的 SO 响应 ( , SSH host key fingerprint does not match pattern C# WinSCP) 但它们不适用。

我对正则表达式一知半解,看起来应该和我匹配,所以我希望我遗漏了一些简单的东西。我有 'ssh-rsa',然后是 space(|-),然后是一些数字,后跟 space(\d+),然后是匹配 [0-9a-zA- 的 43 个字符Z+/]{43}(事实上,我有一个 43 个字符的字符串,这让我觉得我有一个正确的指纹,只是缺少一些句法琐事)。模式的整个后半部分只是前半部分的重复,我假设是一个可选的,所以我不知道什么不被接受?

Base-64编码的SHA-256指纹should be padded with =:

ssh-rsa 2048 ABCDE+I9v1+pLxkhZkod6yAbEh0o7a8wlSsI+ABCDEF=

不过请注意,自 WinSCP 5.17 起,不需要填充。


另外,正如您所提到的两个问题的答案中所述,WinSCP can generate a code template 包括您的正确指纹。