记一次服务器ssh无法登陆的排查过程

一、某一天登陆服务器:提示ssh_exchange_identification: read: Connection reset by peer,以为ssh配置有问题,网上解决方法基本为以下两种:

1、修改/etc/hosts.allow

      vi /etc/hosts.allow   添加如下内容:
      sshd: ALL    ##允许所有ip主机均能连接本机

      重启sshd服务:systectl restart sshd

2、修改ssh连接数

lsof -i:22 | wc -l 查看连接数,未发现异常,还是尝试改一下:

cat /etc/ssh/sshd_config | grep MaxStartups  默认是10
修改MaxSessions为1000,MaxStartups也改为1000

重启sshd:systectl restart sshd

 

二、然而以上两种方法对于我此次的问题无效!继续排查......

此时通过重启或者登陆控制台(我无法登陆控制台,选择重启),可以登陆服务器后,等待再次出现问题......

开始查找问题,通过运行几次命令后,新状况出现了,会有如下报错:

-bash: forx: Cannot allocate memory

看着和内存有关系,free -m查看内存,剩余内存很足,继续问度娘后得知和进程数有关:

1、查看最大进程数,为默认值
# sysctl kernel.pid_max
kernel.pid_max = 32768

2、# ps-eLf | wc -l 查看进程数为32589,可以看到进程数已经满了

此时终于定位到问题,进程数消耗完,导致ssh无法连接,接下来修改最大进程数:

echo 1000000 > /proc/sys/kernel/pid_max
永久生效:
echo  "kernel.pid_max=1000000" >> /etc/sysctl.conf
sysctl -p

此时认为可以高枕无忧了,但是过了没多久,问题又复现了,再次恢复后,开始排查消耗进程数的进程,最后发现有个git相关的进程,一直在不断消耗进程数,核实后把此进程杀掉,问题终于不再出现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用SSH协议连接服务器时,有时候会遇到这样的问题:无法连接到服务器,出现错误提示“network error: connection refused”。这种情况一般是由于以下原因所引起的。 1. SSH服务未启动或端口号不正确 SSH服务在Linux系统中是通过端口号进行通信的,由于端口号的限制,可能会出现SSH服务无法启动的情况,或者端口号被修改后导致无法访问SSH服务。此时需要确认SSH服务是否正常运行,以及正确的端口号是否被使用,可以使用命令“systemctl status sshd”查看服务状态。 2. 防火墙设置限制了SSH连接 服务器上的防火墙可能会限制SSH连接,在默认情况下,端口号22是被设置为SSH连接的端口,如果服务器的防火墙没有开放22端口,那么就无法成功连接。此时需要配置防火墙策略,如在CentOS系统上,可以使用命令“firewall-cmd --add-service=ssh --permanent”,并使用命令“firewall-cmd --reload”使配置生效。 3. SSH服务配置不正确 SSH服务的配置文件可能被错误地修改,导致SSH服务无法正常运行,比如服务端口号的设置、密钥认证的配置等等。此时需要重新检查SSH服务的配置文件,可以使用命令“vim /etc/ssh/sshd_config”进行修改。 总之,当我们遇到“network error: connection refused”错误提示时,需要进行逐一排查以上原因,找到问题所在并及时修复,才能确保成功连接到服务器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值