由denyhosts工具导致的ssh时发生connection timed out during banner exchange
Posted on 2012-06-25 17:22 QualitySong 阅读(11512) 评论(0) 编辑 收藏 举报记录一下,便于以后查询
1、A机器ssh到B机器失败,打印出错误“connection timed out during banner exchange”
2、然后尝试加了ssh的选项 -o ConnetTimeout=30,仍然ssh失败,打印错误“ssh_exchange_identification: Connection closed by remote host”
3、到B机器上查看/var/log/secure日志,发现“refused connect from xx.xx.xx.xx(A机器的ip)”
4、查看/etc/hosts.allow, 空的
5、查看/etc/hosts.deny,发现里面有“sshd:A机器的ip” ,说明了A机器ip会连接B机器的sshd服务时,会被拒绝,于是从hosts.deny中去掉这条内容
6、重启sshd服务,/etc/init.d/sshd restart
7、再次尝试A机器ssh到B机器失败,检查/etc/hosts.deny,发现A机器的ip又被添加进去了,前面还有一条注释,类似如下内容:
"# DenyHosts: Mon Jun 21 xx:xx:xx 2012 | sshd: xx.xx.xx.xx"
8、经过查询发现是denyhosts工具会自动分析secure日志,添加一些认为需要拒绝的ip到hosts.deny中,例如多次ssh连接但输入错误密码的情况就又可能拒绝,具体的规则可以看/etc/denyhosts.conf或者denyhosts.cfg文件中的配置
9、为了让A机器始终可以访问B机器,不打算修改denyhosts的规则,而是直接添加“sshd:A机器ip”到hosts.allow文件中,重启sshd,问题解决
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能
可以参考百度百科的介绍:http://baike.baidu.com/view/5328090.htm