【问题标题】:Why does this SSH host key fingerprint not match the pattern when using WinSCP .NET assembly为什么使用 WinSCP .NET 程序集时此 SSH 主机密钥指纹与模式不匹配
【发布时间】:2020-03-08 08:48:32
【问题描述】:

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

错误:SSH 主机密钥指纹“ssh-rsa 2048 ABCDE+I9v1+pLxkhZkod6yAbEh0o7a8wlSsI+ABCDEF”与模式不匹配 /((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- af]{2}|[0-9a-zA-Z+/]{43}=))*/

引用字符串中的 ABCDE 和 ABCDEF 只是我掩盖了指纹。

我已经检查了现有的 SO 响应( SSH host key fingerprint ... does not match pattern ... when using WinSCP .NET assembly in C# to download files, SSH host key fingerprint does not match pattern C# WinSCP) 但它们不适用。

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

【问题讨论】:

    标签: regex ssh fingerprint winscp winscp-net


    【解决方案1】:

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

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

    但请注意,自 WinSCP 5.17 以来,不需要填充。


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

    【讨论】:

    • 谢谢,马丁 - 这正是我所需要的。我现在点击了“错误:不支持操作”,我担心这可能有点棘手。我正在尝试基于此脚本(您的!)stackoverflow.com/questions/30626006/… 运行某些东西,但我将这一行“username:password@example.com”更改为使用 sftp。所以我猜 sftp 不支持其中一个操作?
    • 少数 SFTP(和 FTP)服务器支持计算校验和。请参阅How to perform checksums during a SFTP file transfer for data integrity? – 如果您需要进一步讨论,请提出一个新问题。
    • 感谢 Martin 的链接 - 如果审计员询问“您如何确定您的现场备份的任何恢复也适用于您的非现场备份?”,这很有用?我们必须定期 SFTP 回传一个文件并运行校验和,以使盒子提示器相信我们已经对自己有信心。
    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2022-06-28
    • 2023-02-09
    相关资源
    最近更新 更多