年初时写了个系统备份的脚本,主要使用rsync工具见(rsync远程同步备份数据(ssh方式)),但前阵子我做备份系统恢复演习时才发现,我的rsync已经很久都没有sync成功了。我本来是采用密钥交换的方式来完成ssh中的验证,但可能由于主机的Key有变化,每次ssh连接(或rsync)时就会有提示:The authenticity of host *** can't be established ,需要输出一个“yes”的交互。
对于这个提示,我的脚本中一开始没有预知,所以没有做判断和处理(用expect也是容易处理的),所以我决定去掉这样的提示(关于宿主机的检查)。
1. 使用ssh连接远程主机时加上“-o StrictHostKeyChecking=no”的选项,如下:
1 |
ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx |
2. 一个彻底去掉这个提示的方法是,修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:
1 2 |
StrictHostKeyChecking no UserKnownHostsFile /dev/null |
修改好配置后,重新启动sshd服务即可,命令为:/etc/init.d/sshd restart (或 service sshd restart )
当然,这是内网中非常信任的服务器之间的ssh连接,所以不考虑安全问题,就直接去掉了主机密钥(host key)的检查。
ssh中遇到的“Host key verification failed.”问题,也是和“StrictHostKeyChecking”配置有关,很久前就总结过了,见:
ssh中“Host key verification failed.”的解决方案
另外,不需要用户名和密码,而是使用ssh key验证实现Linux系统间的ssh免登陆,可以参考我曾经的博文:
ssh配置及实现ssh免登陆Linux
镉对人体