Ubuntu主从服务器文件同步、执行命令

概述

服务器之间同步文件的方式有很多,主流的方式是使用SCPRSYNC;它们都是通过SSH加密通道传输文件,因此都要配置SSH。

1.0> SCP是Linux系统自带的简单方式,不支持增量同步;

2.0> RSYNC是主流的三方软件,功能强大、支持增量同步;

SSH配置

1.0> 在“主服务器”上创建密钥

ssh-keygen
## 或
ssh-keygen -t ed25519

密钥位置:

MAC :   /Users/username/.ssh/
Windows :  /home/username/.ssh/
Linux root用户: /root/.ssh/
Linux 其它用户: /home/siuser/.ssh/

注:SSH密钥严格区分用户,并且当前用户下的密钥对文件权限必须是仅当前用户读写,否则将无法使用。

2.0> 将“主服务器”指定用户的公钥添加到“从服务器”的授权文件中

## 创建 authorized_keys 文件;若已存在,则向已有的authorized_keys文件中追加公钥
cat id_ed25519.pub >> authorized_keys

注:如果“主服务器”中有多个公钥,例如有 id_rsa.pub、id_ed25519.pub等;在Ubuntu 20.04及以后的系统中默认的使用id_ed25519.pub,而不是 id_rsa.pub;因此要将 id_ed25519.pub 公钥添加到“从服务器”。当然,保险期间你也可以将这些公钥全部添加到“从服务器”中。

SSH连通性测试和问题排查

一般情况下完成以下检查,即可确认SSH连通性问题:

1>. 防火墙放开 22 端口

2>. 确认 SSH 服务已启动

3>. 确认服务器可以 Ping

4>. 通过 ssh <username>@<ip> 测试登录,确认两台服务器间的网络连接是否异常;如果异常,则可通过以下命令细化原因:

## 扫描远程服务器的22端口,确认22端口是否已开放
nmap -p 22 <IP地址>

## 连接远程服务器的22端口,确认22端口能够连接
telnet <IP地址> 22

注:有些服务器之间无法通过SSH登录,可能是因为外部网络限制;例如:国内某些云服务器可能无法与国外服务器通过SSH通信,这种情况虽然少见,但实践中也偶有遇到。

通过SSH远程执行命令

在远程服务器上以siuser用户执行指定命令

ssh siuser@<远程服务器IP> 'sudo /usr/sbin/nginx -s reload'

SCP文件同步

1.0> 将“主服务器”上的指定文件夹复制到“从服务器”的指定文件下(默认为覆盖)

## 在主服务器上执行如下命令
scp -r /var/www/ssl siuser@<从服务器IP>:/var/www/
举报

© 著作权归作者所有


1