Macos以及linux中sshpass 自动 SSH 登录及 rsync 自动化同步实用指南

社区话题 Macos以及linux中sshpass 自动 SSH 登录及 rsync 自动化同步实用指南

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #741

      追光
      管理员

      下面是一份完整的 分享日志,包含 sshpass 的作用、为什么需要它、Mac/CentOS/Ubuntu 的安装方法,以及安全性说明,记录社区rsync同步系统开发过程。


      sshpass 自动 SSH 登录及 rsync 自动化同步实用指南

      一、为什么需要 sshpass?

      在 Linux 或 Mac 系统中,sshrsync 默认需要手动输入密码,这是交互式操作,无法在自动化脚本中使用。如果想在 Shell 脚本中实现无人值守的 SSH 登录或 rsync 文件同步,就需要 sshpass

      作用:

      • sshpass 是一个命令行工具,用于非交互式输入密码。

      • 它将密码通过标准输入传递给 sshrsync,避免人工输入。


      二、为什么不用 expect?

      • expect 也可以实现自动输入密码,但过于复杂且需要脚本语言支持。

      • sshpass 轻量级、单命令即可解决问题,专为 SSH 自动化设计。


      三、sshpass 的安全性问题

      • 密码明文存在脚本中 → 有风险,不适合生产环境。

      • 推荐:

        • 首选 SSH Key 登录(免密码,安全性高)。

        • 密码模式仅作为临时方案或测试场景。

        • 如果必须用密码,可以结合 .env 文件 + chmod 600 限制权限。


      四、安装方法

      1. Ubuntu / Debian 系统

      sudo apt-get update
      sudo apt-get install sshpass -y

      2. CentOS / RHEL 系统

      sudo yum install epel-release -y
      sudo yum install sshpass -y

      3. MacOS 系统

      • Mac 默认没有 sshpass,需通过 Homebrew 安装:

      brew install sshpass
      brew install hudochenkov/sshpass/sshpass

      五、如何使用?

      1. ssh 自动登录

      sshpass -p 'your_password' ssh -p 22 user@host

      2. rsync 自动同步

      sshpass -p 'your_password' rsync -avzP -e "ssh -p 22" /local/path user@host:/remote/path

      六、最佳实践:优先 SSH Key,sshpass 作为兜底

      • 如果本地有 私钥(id_rsa),直接配置 ~/.ssh/config 实现免密。

      • 如果没有 Key,且需要快速部署 → 用 sshpass


      ? 下一个升级版方案

      • 写一个通用脚本:

        • 自动检测系统是否安装 sshpass,如果缺失 → 提示安装命令。

        • 支持 自动选择 Key 或密码模式

        • 支持 日志输出多任务同步

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。