服务器之间同步文件的方式有很多,主流的方式是使用SCP
或RSYNC
;它们都是通过SSH加密通道传输文件,因此都要配置SSH。
1.0> SCP是Linux系统自带的简单方式,不支持增量同步;
2.0> RSYNC是主流的三方软件,功能强大、支持增量同步;
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连通性问题:
1>. 防火墙放开 22
端口
2>. 确认 SSH
服务已启动
3>. 确认服务器可以 Ping
通
4>. 通过 ssh <username>@<ip>
测试登录,确认两台服务器间的网络连接是否异常;如果异常,则可通过以下命令细化原因:
## 扫描远程服务器的22端口,确认22端口是否已开放
nmap -p 22 <IP地址>
## 连接远程服务器的22端口,确认22端口能够连接
telnet <IP地址> 22
注:有些服务器之间无法通过SSH登录,可能是因为外部网络限制;例如:国内某些云服务器可能无法与国外服务器通过SSH通信,这种情况虽然少见,但实践中也偶有遇到。
在远程服务器上以siuser
用户执行指定命令
ssh siuser@<远程服务器IP> 'sudo /usr/sbin/nginx -s reload'
1.0> 将“主服务器”上的指定文件夹复制到“从服务器”的指定文件下(默认为覆盖)
## 在主服务器上执行如下命令
scp -r /var/www/ssl siuser@<从服务器IP>:/var/www/