我撰写本文原来的意图是想把“复制SSH渠道”和"copy SSH Session"这样的功能从远程ssh客户端中剔除掉.因此想到可以在SSH服务端设置一下,但查阅了sshd_config的man手册,发现里面的看起来限制ssh连接数量的参数(MaxSessions ,ClientAliveCountMax等)在复制SSH渠道中并不好用,即一个远程ssh客户端可以通过这种方式几乎无限制的建立ssh会话,未免让人觉得“不爽”。

例如,我正在做一件事情,突然想出去,但我不想改变当前终端中的任何操作,也不想让别人在我出去后过来动我正在做的工作,那我可以简单的按下Ctrl+S来锁定终端数据输入输出(尽管输入并不能锁定,但输入将对用户不可见),当我回来时可以再通过按下Ctrl+Q来解除“屏幕锁定”,这样不熟悉Linux的同事就不会来干扰我的工作,而不用锁定整个系统。但自己却知道我可以通过复制SSH渠道/会话的方式来建立一个可用的新的SSH连接,而这样的操作在以后繁杂的工作中是不可能逐一去查看的,因此想直接写个shell脚本来实现这个需求。

思路还是比较简单的,代码也没有几行。首先这个脚本一定有循环,这样才能起到持续化监测的能力,通过命令不断的查询sshd端口的连接用户和每个用户的连接数量,如果数量超过我设定的最大连接数量,则再通过命令找到这些连接的会话,再通过命令结束这些会话,从而实现目的。

但这其中有几个问题需要考虑:用户按键,特别是快捷键(如Ctrl+D,Ctrl+C或Ctrl+\等的处理)

pts的数值可能会shell脚本中的最大值,除非新登录的用户的pts数值只增加不减少

PAM安全模块也许有更好的解决方案(shell脚本肯定不是最佳方案)

通过测试的脚本如下:#!/bin/bash

# This shell script will knock out extra ssh connection

# max_number_of_ssh_client

max_number_of_ssh_client=3

# lsof is essential

if [[ ! -x `which lsof` ]]; then

yum install lsof -y

RETVAL=$?

if [[ "$RETVAL" -ne "0" ]]; then

echo "ERROR: can NOT use lsof command, please check your internet connection or install lsof by manual! "

exit $RETVAL

fi

else

# TODO

# for awk, grep, etc

echo "SUCCESS: This shell script will knock out extra ssh connection "

fi

# a main worker

# loop

while : ; do

ssh_port=`netstat -anopt | grep sshd | awk '{print $4}' | awk -F ':' '{print $2}' | grep -v ^$ | uniq `

ssh_clients=`lsof -i:$ssh_port | grep \> | awk '{print $9}' | awk -F ':' '{print $(NF-1)}' | uniq | awk -F '>' '{print $2}'`

for ssh_client in $ssh_clients; do

number_of_ssh_client=`lsof -i:$ssh_port | grep $ssh_client | wc -l`

if [[ $number_of_ssh_client -gt $max_number_of_ssh_client ]]; then

number_pts=`w -hs | grep $ssh_client | awk '{print $2}' | awk -F '/' '{print $2}' | awk 'BEGIN {max=0} {if ($1>max) max=$1 fi} END {print max}'`

# TODO

# another solution maybe exist

# kill extra logins

pkill -kill -t pts/$number_pts

if [[ $? -eq 0 ]]; then

echo "SUCCESS: extra connections  $ssh_client@pts/$number_pts has been knocked out! "

else

echo "WARNNING: can NOT knock out extra connections! "

fi

else

# TODO

# too many INFO displayed

echo "INFO: number of ssh connections is NORMAL! "

# sleep 1

sleep 1

fi

done

done

注释:脚本中的几个TODO可以多考虑考虑,其次里面的蹩脚英语请自行略过,:)

linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数相关推荐

  1. Linux Shell 脚本限制ssh最大用户登录数

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1670233 我撰 ...

  2. linux ssh最大会话数,Linux Shell 脚本限制ssh最大用户登录数

    我撰写本文原来的意图是想把"复制SSH渠道"和"copy SSH Session"这样的功能从远程ssh客户端中剔除掉.因此想到可以在SSH服务端设置一下,但查 ...

  3. Linux运维:Shell脚本实现ssh免密登录远程服务器

    LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...

  4. Shell脚本实现SSH免密登录及批量配置管理

    1.SSH免密登录及批量配置管理 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的P ...

  5. Linux-----Ubuntu通过shell脚本将SSH多次登录失败的IP自动加入黑名单

    一:与登录相关文件介绍 ubuntu三个文件日志介绍: 1:/var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间: 2:/v ...

  6. 远程连接linux配置文件,Linux远程连接介绍及相关配置

    Linux远程连接介绍及相关配置 1.使用远程连接的根本原因 在企业现实的工作中,我们不可能每台服务器都配置一台显示器,也不可能时刻在服务器旁边,但是我们企业中的服务器需要时刻进行维护,而我们维护人员 ...

  7. Linux远程连接和软件安装

    Linux远程连接和软件安装 文章目录 Linux远程连接和软件安装 1.Linux远程连接简介 2.远程连接准备 3.Linux进程和程序 4.moba实现远程连接步骤: 5.软件安装 1)yum命 ...

  8. Windows下最简洁的Linux远程连接软件

    一直在找Linux远程连接软件,都发现不够简洁,清爽.直到最近发现了 putty 这个软件.先放一张效果图! 比较清爽吧!下面介绍下他的使用! 下载地址: 官方地址:https://www.chiar ...

  9. 远程连接docker里的Linux容器

    远程连接docker里的Linux容器 安装容器的SSH服务 apt-get install openssh-server 安装vim编辑器 apt-get install vim 安装lrzsz a ...

最新文章

  1. 2022互联网大厂薪资大比拼
  2. 指尖时刻:百度移动营销生态体系
  3. 编程之美-找到符合条件的整数
  4. 安装完Oracle 11g之后启动SQL Developer 时报cannot find a j2se sdk错误的解决办法
  5. SSM-SpringMVC-07:SpringMVC中处理器映射器
  6. 程序员修神之路--那些分布式事务解决方案
  7. JS_14 执行上下文与执行上下文栈
  8. C# log4net纯代码设置参数
  9. python echarts教程_ECharts 入门教程
  10. SpringMVC表单标签简介
  11. word2016排版脚注问题
  12. 肇庆PCR实验室建设消毒事项汇总
  13. 【经典】《Java170道面试笔试题全面含答案》涉及java/数据库/Spring框架/JVM/数据结构算法/设计模式相关
  14. CSS 指层叠样式表 (Cascading Style Sheets)
  15. c语言泊松分酒编码,泊松分酒原理
  16. allegro使用汇总
  17. 浅谈IC卡与ID卡重大区别
  18. PADS-电阻、电容、电感门封装
  19. RestFul接口的安全验证事例
  20. 数字化转型时代,如何让你的 App 摆脱“内卷”?

热门文章

  1. mcq 队列_人工智能能力问答中的人工智能概率推理(MCQ)
  2. 校园计算机网络系统,校园计算机网络系统
  3. docker集群搭建(k8s)
  4. easyui的textbox实现编辑保存_第80讲:工作表数据与UserForm窗口的交互,记录的编辑和保存...
  5. ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法
  6. android 网络程序下载,Android之网络文件下载
  7. win 杀掉占用的端口_Windows netstat 查看端口、进程占用、杀掉进程
  8. Java DataInputStream skipBytes()方法与示例
  9. Java LinkedList void add(int index,Object o)方法,带示例
  10. 图文并茂的聊聊Java内存模型!