使用 rsync SSH 传输文件

2021-06-03
2021-06-03
2 min read
Hits

  最近有一个需求,将一个服务器的文件备份至同网段的另一个服务器。文件备份有很多协议或者很多方法可以实现,然博主比较菜,看来看去觉得还是用 rsync 走 SSH 比较简单也更安全。历经九九八十一难才取得真经,于是一刻都不敢怠慢,赶紧记录下配(cai)置(keng)过程。

前提

  使用 rsync SSH 传输文件有两个非常重要的前提(也是博主踩过坑的地方)

  1. 两台服务器都必须安装并开启 rsync 服务
  2. SSH 密钥对必须在“发送端”生成并同步至“接收端”(博主在这里踩了个大坑,注意一定要将“发送端”的密钥同步至“接收端”,如何同步下文会详细描述)

发送端操作

ssh-keygen -t rsa     # 生成密钥对
more .ssh/id_rsa.pub     # 查看并复制发送端的公钥

接收端操作

mkdir .ssh     # 创建存放密钥对的隐藏文件夹
cd .ssh     # 进入文件夹
nano id_rsa.pub     # 将发送端的公钥粘贴并保存
cat id_rsa.pub >> authorized_keys     # 安装公钥
chmod 600 authorized_keys     # 设置权限
chmod 700 ~/.ssh     # 设置权限
nano /etc/ssh/sshd_config     # 去掉“PubkeyAuthentication yes”前的“#”
service sshd restart     # 重启 SSH 服务

发送端同步密钥

ssh-keyscan -t rsa “接收端 IP” >> /root/.ssh/known_hosts     # 将接收端的密钥存入发送端

配置完成,可以由发送端将文件传输至接收端了。

排错(踩坑记录)

No ECDSA hsot key is known for 192.168.x.x and you have requested strict checking.

  显示此报错证明最后一步“发送端同步密钥”未做。

ssh-keyscan -t rsa “接收端 IP” >> /root/.ssh/known_hosts     # 将接收端的密钥存入发送端

  在发送端输入如上命令即可。

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

  显示此报错说明你“聪明反被聪明误”了(博主也是😂)。是不是查看了 know_hosts 文件,发现文件内的密钥不是 id_rsa.pub 里的公钥,于是就把它擅自修改为 id_rsa.pub 内的公钥了,最后导致了这个报错。所以只需删除你自己修改的密钥然后重新完成最后一步“发送端同步密钥”即可。

cd /root/.ssh/     # 在发送端定位至存放密钥对的隐藏文件夹
nano known_hosts     # 删除接收端的密钥
ssh-keyscan -t rsa “接收端 IP” >> /root/.ssh/known_hosts     # 重新同步密钥

bash: rsync: 未找到命令

  哎呀,都说了接收端也要安装并使用 rsync 服务了,回去安装去。

sudo yum install rsync -y     # CentOS
sudo apt install rsync -y     # Ubuntu/Debian

参考网站

6. Tasks —— FreeNAS User Guide 9.3 Table of Contents

Avatar

Hui.Ke

❤ Cyber Security | Safety is a priority.