Macos以及linux中sshpass 自动 SSH 登录及 rsync 自动化同步实用指南
› 社区话题 › Macos以及linux中sshpass 自动 SSH 登录及 rsync 自动化同步实用指南
- 该话题为空。
正在查看 0 条回复

- 作者帖子
- 2025年7月16日 - 上午2:46 #741

追光管理员下面是一份完整的 分享日志,包含 sshpass 的作用、为什么需要它、Mac/CentOS/Ubuntu 的安装方法,以及安全性说明,记录社区rsync同步系统开发过程。
sshpass 自动 SSH 登录及 rsync 自动化同步实用指南
✅
一、为什么需要 sshpass?
在 Linux 或 Mac 系统中,ssh 和 rsync 默认需要手动输入密码,这是交互式操作,无法在自动化脚本中使用。如果想在 Shell 脚本中实现无人值守的 SSH 登录或 rsync 文件同步,就需要 sshpass。
作用:
sshpass 是一个命令行工具,用于非交互式输入密码。
它将密码通过标准输入传递给 ssh 或 rsync,避免人工输入。
✅
二、为什么不用 expect?
expect 也可以实现自动输入密码,但过于复杂且需要脚本语言支持。
sshpass 轻量级、单命令即可解决问题,专为 SSH 自动化设计。
✅
三、sshpass 的安全性问题
密码明文存在脚本中 → 有风险,不适合生产环境。
推荐:
首选 SSH Key 登录(免密码,安全性高)。
密码模式仅作为临时方案或测试场景。
如果必须用密码,可以结合 .env 文件 + chmod 600 限制权限。
✅
四、安装方法
1. Ubuntu / Debian 系统
sudo apt-get update sudo apt-get install sshpass -y2. CentOS / RHEL 系统
sudo yum install epel-release -y sudo yum install sshpass -y3. MacOS 系统
Mac 默认没有 sshpass,需通过 Homebrew 安装:
brew install sshpassbrew install hudochenkov/sshpass/sshpass✅
五、如何使用?
1. ssh 自动登录
sshpass -p 'your_password' ssh -p 22 user@host2. 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 条回复
- 在下方一键注册,登录后就可以回复啦。