Skip to content

十五、网络、归档与远程工具 ​

本章把归档、校验和、HTTP 下载、SSH 与增量同步串成“先获取、再验证、后使用”的安全链路。所有生产示例 默认只读/试运行优先,设置连接和总超时,限制重试,并保留主机密钥校验。

本章目录 ​

学习目标 ​

  1. 使用 tar/gzip/zip 并识别路径穿越、覆盖与压缩炸弹风险。
  2. 使用 SHA-256 校验下载内容,区分完整性校验与真实性验证。
  3. 为 curl 设置 TLS 验证、超时、有限重试和临时文件。
  4. 不关闭 SSH 主机密钥校验,避免远程命令二次解析与凭据泄漏。

非标准工具依赖 ​

POSIX 只规定部分命令的基础接口;TLS、SSH 和增量同步依赖独立项目。脚本必须探测实际实现及版本,不能只根据 命令名推断选项可用。许可证也以部署环境内实际安装的软件包为准。

工具本机核验实现许可证与维护安装方式可选替代缺失时的行为
curlcurl 8.7.1curl License;curl 项目持续维护brew install curl / apt-get install curlwget 或应用语言的 HTTP 客户端;选项和状态语义不同写 stderr 并退出 127;不得退化为跳过 TLS 校验
ssh / scpOpenSSH 10.3p1BSD-style licenses;OpenSSH 项目持续维护macOS 自带,或 brew install openssh / apt-get install openssh-clientsftp 仍属于 OpenSSH;专用 SDK 适合复杂协议流程写 stderr 并退出 127;不得关闭主机密钥校验绕过依赖问题
rsyncopenrsync protocol 29,兼容 rsync 2.6.9实现相关:openrsync 使用 ISC License,上游 rsync 使用 GPL-3.0-or-latermacOS 自带,或 brew install rsync / apt-get install rsyncscp/sftp 不具备完全相同的增量和删除语义写 stderr 并退出 127;不得把 cp 当作透明替代
tarbsdtar 3.5.3 / libarchive 3.7.4实现相关:libarchive 使用 BSD-style license,GNU tar 使用 GPL-3.0-or-later系统通常自带;GNU 实现可用 brew install gnu-tar / apt-get install tarzip/unzip 的元数据和路径语义不同写 stderr 并退出 127;不得继续处理未审查的归档内容

生产脚本应在入口统一调用 require_cmd,并在支持矩阵中记录 curl --version、ssh -V、 rsync --version 和 tar --version。Linux 发行版与 macOS 可能提供同名但不同实现的命令。

前置知识 ​

关联章节 ​

ICP 备案号待补充 · Gitee 主页