Linux Rsync 密钥认证教程

0
16

### 一、环境

  • 两台主机:

    • 本地主机(你运行 rsync 的机器)
    • 远程主机(目标机器,接收或发送文件)
  • 确认两边都安装了 rsyncssh

    rsync --version
    ssh -V

二、生成 SSH 密钥对(在本地主机)

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 按提示一路回车即可(如果你不想要密码短语,直接回车跳过)。
  • 默认会生成:
    • 私钥:~/.ssh/id_rsa
    • 公钥:~/.ssh/id_rsa.pub


三、把公钥复制到远程主机

  1. 使用 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 文件里。

  2. 如果没有 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 + 密钥认证

  1. 从本地同步到远程

    rsync -avz /path/to/local/dir/ user@remote_host:/path/to/remote/dir/
  2. 从远程拉取到本地

    rsync -avz user@remote_host:/path/to/remote/dir/ /path/to/local/dir/
  3. 常用参数说明

    • -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 密钥认证的配置

发布回复

请输入评论!
请输入你的名字