SSH免密连接(密钥对认证)

aqhby
2025-07-15 / 0 评论 / 2 阅读 / 正在检测是否收录...

前言

2台主机间文件同步需求


介绍

rsync 是一种高效的文件同步工具,广泛用于 Linux 系统中。它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件。rsync 的一个显著特点是它仅传输变化的文件部分,这种增量备份方式大大提高了数据传输的效率

# 安装
sudo apt update
sudo apt install rsync

# 运行
rsync -avz --progress --delete 用户名@远程服务器地址:/远程/路径/ /本地/路径/

# 直接运行, 输入yes, 输入远程主机密码即可
rsync -avz --progress --delete aqhby@192.168.0.106:/opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/ /opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/
  1. -a:归档模式(archive)

    • 递归复制目录及其子目录。
    • 保留文件的所有属性(如权限、时间戳、所有者等)。
    • 等价于 -rlptgoD(递归、链接、权限、时间、组、所有者、设备文件)。
  2. -v:详细模式(verbose)

    • 显示同步过程的详细信息,包括复制的文件名、进度等。
  3. -z:压缩传输(compress)

    • 在传输过程中对文件进行压缩,减少网络传输量,适合远程同步。
  4. --progress:显示进度

    • 实时显示每个文件的传输进度(已传输字节、速度、完成百分比)。
  5. --delete:删除目标多余文件

    • 使目标目录与源目录完全一致,删除目标中不存在于源的文件。
    • 注意:此参数需谨慎使用,可能导致数据丢失!

免密同步配置

为了实现免密传输,可以通过生成和配置 SSH 密钥来避免每次同步时输入密码

如果想要rsync免密同步 则需要进行 rsync 配置

原理:

  • client (你面前的机器) 有私钥 .ssh/id_rsa
  • server(被连的机器) 的~/.ssh/[authorized_keys] 存着本机的公钥(最先在本机上存在于.ssh/id_rsa.pub), 就可以免密登陆
  • 根据这个原理, 手动复制粘贴就行. 下面是用命令减少手工劳动的办法:
  1. 首先,在本地主机上生成 SSH 密钥。使用以下命令:
# 这条命令将会生成一个 RSA 类型的 2048 位的密钥对。你可以根据需要选择其他类型和位数
ssh-keygen -t rsa -b 2048  

# 或者

ssh-keygen

# 遇到  Enter passphrase 时; 不要输入。如果输入, 连接时会被要求 密钥密码 输入密码

复制本地 .ssh/id_rsa.pub 内容, 粘贴在 server .ssh/authorized_keys 文件中; 注意!!! 一条记录只占一行
图片1

  1. 将公钥复制到远程主机
    将生成的公钥复制到远程主机上,可以使用 ssh-copy-id 命令:

    # 用户名@远程主机
    ssh-copy-id aqhby@192.168.1.106

    也可以手动复制
    图片2

再次运行, 则不再提示输入密码

rsync -avz --progress --delete aqhby@192.168.0.106:/opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/ /opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/
1

评论 (0)

取消