在做两台服务器的数据同步,无论是通过ssh登陆,还是通过scp拷贝文件都需要输入密码,所以要想实现两机数据同步则 必须先要解决的是无需登陆的ssh,这样再通过crontab就可以通过脚本定时通过scp命令来做远程备份了。Linux ssh无密码访问是由服务器和客户端两端的配置来实现的,嗨网在线 以Ubuntu为例说明文件同步与SSH无密码登陆
服务器端配置 ssh
修改客户端sshd配置文件
sudo vi /etc/ssh/sshd_config
修改为
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
重启ssh服务
sudo /etc/init.d/sshd restart
配置密钥
在客户端生成公钥和私钥文件
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp 到服务器端
scp ~/.ssh/authorized_keys username@hostname:~/.ssh/authorized_keys
修改 config 文件
vi ~/.ssh/config
添加
host sshname
HostName hostname(ip address)
user username
IdentityFile ~/.ssh/id_rsa
测试
ssh sshname (-p port)
rsync 同步
rsync (--exclude=exclude) -avz (-e "ssh -p 22") ./ sshname:~/path
注:
- 括号为可选
- hostname 指域名或者 IP 地址
- username 对应服务器的用户名