記錄一下,便於以后查詢
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