### 一、环境
-
两台主机:
- 本地主机(你运行
rsync的机器) - 远程主机(目标机器,接收或发送文件)
- 本地主机(你运行
-
确认两边都安装了
rsync和ssh。rsync --version ssh -V
二、生成 SSH 密钥对(在本地主机)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 按提示一路回车即可(如果你不想要密码短语,直接回车跳过)。
- 默认会生成:
- 私钥:
~/.ssh/id_rsa - 公钥:
~/.ssh/id_rsa.pub
- 私钥:
三、把公钥复制到远程主机
-
使用
ssh-copy-id(推荐):ssh-copy-id user@remote_host 用户名@远程主机地址 例如:远程服务器的IP是192.168.1.100,用户名是root root@192.168.1.100, 远程服务器的域名example.com,用户名是deploy deploy@example.com这会自动把
~/.ssh/id_rsa.pub追加到远程主机的~/.ssh/authorized_keys文件里。 -
如果没有
ssh-copy-id,手动复制:cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys" chmod 600 ~/.ssh/authorized_keys
四、验证免密登录
ssh user@remote_host
如果不再要求输入密码,就说明密钥认证已经配置好了。
五、使用 rsync + 密钥认证
-
从本地同步到远程:
rsync -avz /path/to/local/dir/ user@remote_host:/path/to/remote/dir/ -
从远程拉取到本地:
rsync -avz user@remote_host:/path/to/remote/dir/ /path/to/local/dir/ -
常用参数说明:
-a:归档模式(保持权限、符号链接等)-v:显示过程-z:压缩传输-P:显示进度,并支持断点续传--delete:让目标目录和源目录保持完全一致(会删除多余文件)
六、进阶用法
-
指定私钥文件(如果不是默认的
~/.ssh/id_rsa):rsync -avz -e "ssh -i /path/to/private_key" /local/ user@remote:/remote/ -
只同步新文件/更新的文件:
rsync -avzu /local/ user@remote:/remote/
✅ 到这里,你就完成了 rsync 基于 SSH 密钥认证的配置。