▚ 01 问题描述


  • 📢 SSH远程终端连接失败的报错信息如下:

Remote rejected opening a shell channel: Error: (SSH) Channel open failure: open failed


在这里插入图片描述


▚ 02 分析原因


  • 根本原因是当前用户的SSH远程连接终端数量达到了上限,比如CentOS7系统限制SSH单用户登陆数为10。

  • 迷惑行为:表明看起来已打开的SSH终端窗口不足上限啊,为啥还是不能新增SSH终端窗口呢?其原因在于有些SSH终端窗口未正常关闭,再加上正打开的SSH终端窗口,就达到了SSH远程连接终端的数量上限。

  • 这些往往是由用户的不当操作引起的,比如直接强制关闭终端窗口,而非使用exit来正常退出当前窗口。这些异常被关闭的SSH连接往往在数个小时之后才结束(长时间没有数据传输)。

在这里插入图片描述


▚ 03 解决方法


  1. 首先,查找异常关闭的SSH连接;
  2. 再强制关闭上述SSH连接即可。

3.1 查看当前用户信息

  • 使用如下命令w可查看:当前用户名(USER列所示),实际SSH连接的终端数量(比如TTY列共有10个pts)。
w

在这里插入图片描述

3.2 查看当前SSH连接终端窗口的TTY

  • 使用如下的命令,会显示当前SSH连接终端窗口的用户名,以及对应的TTY。
who am i

这里假设当前用户名为:dabai

3.3 查看异常结束的SSH连接

  • 使用如下的命令,可查看所有SSH连接的详细信息,其中username表示当前用户名。
ps -u dabai
  • 找到状态为Z(zombie 僵死进程)的进程,

在这里插入图片描述

  • 或者,在已知异常退出SSH连接的TTY时,可利用如下命令,来查找对应的进程号(PID):
ps -u dabai
  • 查询结果为:
    在这里插入图片描述

3.4 杀死异常结束的SSH连接终端

  • 假设其对于的进程号(PID)为 12345,使用命令kill -9彻底关闭异常的SSH连接,如下所示:
kill -9 22567

在这里插入图片描述


参考资料






在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐