0x00 概述
一般来讲,无法登录ssh的原因挺多,如果无法登录云服务器,则除了要检查ssh端口是否放行,防火墙状态外,还需要检查云服务器web控制台入站规则是否开放了对应端口。如果你前面检查都是正常,那么还需要注意云服务器运营商。某些奇葩的运营商,例如TY云,限定了80,8080,443,8443 这四个端口不光要控制台入站规则放行,还得要备案才行。如果你没有用这些端口,那么请接着看本文我遇到的问题及解决方案。
0x01 复现问题
这个问题是我在将ssh端口改成非22后碰巧发现的。配置完重启连不上了。改回22也连不上了,而且我使用的网络环境出网ip和之前没变,我大胆猜测可能是我的出网ip被ssh server ban了。
果然发现是黑名单问题, vim /etc/hosts.allow 添加 sshd:出口ip ,
这里白名单的优先级大于黑名单。
排查黑名单, vim /etc/hosts.deny
发现这里多了2行代码,暂不清楚是被什么防护软件添加进去的,只拦截ssh服务。
vim /etc/sshd.deny.hostguard 果然有我的出口ip!!!
SSH安全防护脚本–自动添加到/etc/hosts.deny | 码农家园
0x02 后记
百度这个文件可能是 denyhosts 这个服务写入的,暂不清楚什么时候安装的。挺神奇的~
记录调试问题期间的一些操作:
iptables -I INPUT -p tcp --dport xxxx -j ACCEPT
上面的操作为临时添加防火墙规则,放行xxxx端口, 重启失效。
iptables -L 看不到添加的策略,要用 iptables -nvL 查看。