记录一次诡异的ssh连接问题
场景描述
有开发需要连接一台机器,通过jumpserver授权后提示认证失败,无法连接
环境说明
生产中我们是通过jumpserver进行所有机器管理的,这个是我推动的,这里需要说明一下,之前的权限管理比(非)较(常)混乱,公司的腾讯云机器150+,也没有做VPC,每个机器都有公网IP,都是通过个人密钥连接机器的,所以后来我把jumpserver给落地生产了,一方面是方便权限管理,另一方面是jumpserver支(防)持(止)命(运)令(维)记(背)录(锅)
问题描述
开发需要连接的这个机器,我给授权后,开发说无法连接,报错认证失败
我在jumpserver中各种方法都尝试了还不行
连接提示认证失败,在jumpserver群中提问,果然没有失望,还是熟悉的味道,没人回答
诡异的问题
1、在jumpserver中连接提示认证失败,相同的系统用户(jumpserver中的系统用户就是用于登陆jumpserver后连接机器的用户),登陆其余机器没有问题
2、通过跳板机(我们有一台可以免密连接其他机器的跳板机)ssh连接机器,root用户连接特别慢(需要等待10秒左右,但是可以连接),ubuntu用户无法连接,报错权限拒绝,但是密钥是正确并且存在的!
3、使用root用户登陆这个机器后,执行
su - ubuntu
报错Cannot execute /bin/bash: Too many open files in system
排查问题的过程
1、切换用户报错
Cannot execute /bin/bash: Too many open files in system
,百度后得到的答案大部分是系统文件句柄数打开过多,超出了系统的限制,因此会出现这个问题,不过实际上也确实是服务器上某些程序打开文件句柄书过多了2、既然是程序打开文件句柄数过多,那就需要排查一下是哪些程序打开的文件句柄数过多, 关于查看进程打开的文件句柄数和修复方法的文章,参考文章之后,使用命令
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
查看之后进程打开的句柄数总数和系统设置的对应不上,这里还不太明白
解决问题的步骤
切换用户报错
$ su - ubuntu
Cannot execute /bin/bash: Too many open files in system