【问题描述】
OpenStack云主机ssh连接远程机器时提示“ssh_exchange_identification: Connection closed by remote host”或 Connection refused
1、通过其它Linux云主机ssh xx@ip -pport 登录该云主机失败报错ssh_exchange_identification: Connection closed by remote host
【问题分析】
1、在OpenStack控制节点查询虚拟机的状态
nova show [instance-uuid]
虚拟机状态为active的,并且虚拟机可以ping通只是无法ssh登录上去
获取虚拟机的vnc登录地址,通过VNC地址登录虚拟机
nova get-vnc-console [instance-uuid] novnc
发现系统里面有报:Out of memory:Kill process java score or sacrifice child
Killed process java total-vm:xxxKB,anon-rss:xxx
服务器卡死,先重启云主机,恢复云主机,使云主机系统可以正常执行指令
2、云主机恢复后尝试ssh登录云主机还是报同样的错误,查看云主机安全规则设置
iptable -L
systemctl status firewalld
getenforce
检查这些都没有问题
【解决方法】
1、首先排查云主机网络连通性没问题
2、其次排查云主机系统内存资源耗尽,也会导致系统在建立ssh连接时由于没有资源而失败。排查到OOM内存溢出,重启虚拟机后 系统内存释放,系统内指令可以正常执行 free -h 系统内存充足
3、查看系统安全设置,没有发现有登录限制 /etc/hosts.allow(允许登录),/etc/hosts.deny (禁止登录)
4、查看是否存在暴力破解
判断服务器是否遭遇到暴力破解?
pam_ tally2 -u root
查看root用户登录密码连续输入错误次数
pam_ tally2 -u root -r #清除root用户密码连续输入 错误次数
清除完之后,ssh远程登录恢复
【问题结论】
主要原因是程序内存溢出导致服务器内存耗尽;根本原因是云主机被暴力破解大致远程登录用户被锁死
建议针对暴力破解的IP源,做系统安全加固限制 /etc/hosts.deny (禁止登录),
sshd:暴力破解源IP:deny
systemctl restart sshd
【知识点补充】
/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hosts.deny为准。
/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问Linux的某项服务
查看ssh登录连接的详细信息
ssh -v root@x.x.x.x -pport
详情请见微信公众号