有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在SFTP文件传输期间执行校验和以确保数据完整性?

我需要为SFTP执行校验和(数据完整性)。我希望这可以在SFTP文件传输期间完成——我意识到这可能取决于产品(仅供参考:使用CLEO VLTrader),但我想知道这是否是惯例

我也在寻找替代的数据完整性检查选项,这些选项与使用校验和算法一样好(或更好)。谢谢


共 (1) 个答案

  1. # 1 楼答案

    使用SFTP,通过加密的SSH会话运行,文件内容在传输过程中损坏的可能性微乎其微。SSH本身进行数据完整性验证

    因此,除非内容被破坏,否则在读取本地文件或写入远程文件时,如果没有报告错误,您可以非常确定文件上传正确。这意味着数据损坏的风险与在两个本地驱动器之间复制文件的风险大致相同

    如果您不认为在将文件从一个本地驱动器复制到另一个本地驱动器时验证数据完整性是必要的,那么我不认为,您需要在SFTP传输之后验证完整性,反之亦然。p>


    如果仍要显式测试:

    虽然SFTP协议中有^{} extension来计算远程文件校验和,但它并没有得到广泛支持。尤其是最广泛的SFTP服务器实现OpenSSH不支持它。见What SFTP server implementations support check-file extension

    也没有多少客户端/客户端库支持它您没有指定正在使用的客户端/库,因此我无法提供更多详细信息

    有关某些实现的详细信息,请参阅:

    除此之外,您唯一的选择是下载文件(如果上传)并在本地进行比较


    如果您有对服务器的shell访问权限,当然可以尝试通过单独的shell/SSH连接(或“exec”通道)运行一些shell校验和命令(例如sha256sum),并分析结果。但这不再是SFTP解决方案

    例如: