当前位置: 首页 > 编程日记 > 正文

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

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

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

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

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

但这其中有几个问题需要考虑:

  1. 用户按键,特别是快捷键(如Ctrl+D,Ctrl+C或Ctrl+\等的处理)

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

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

通过测试的脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/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可以多考虑考虑,其次里面的蹩脚英语请自行略过,:)


本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1670233

相关文章:

hessiancpp编译和使用(C++版)

个人博客:戳我,戳我 许下的承诺 前两篇博客Hessian通信案例(java)和Hessian源码分析(java)介绍了Java版的hessian的使用以及源码分析。当时也说过打算写一下C版的hessian的使用和源码分析,现在就是兑现承诺的时候了。其实我项目中实际用到的…

美国AI博士一针见血:Python这样学最容易成为高手!

我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式&#xff0…

win7操作系统在哪显示隐藏文件夹

win7操作系统在哪显示隐藏文件夹 打开计算机--组织--文件夹和搜索选项--查看--把 “隐藏受保护的操作系统文件”前面的钩去掉,选中“显示隐藏的文件、文件夹和驱动器”--确定

ASP.NET MVC4中调用WEB API的四个方法

当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法。就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务。然而,越来越多的互联网…

使用docker制作hexo镜像

个人博客:戳我,戳我 背景 这段时间一直在折腾我的博客,由于之前出现过一次电脑硬盘完全挂掉的情况,为了避免重新搭建博客系统,一直打算搞一个方便点的环境,能进行多机迁移之类的。正好,Docker完…

3D目标检测深度学习方法数据预处理综述

作者 | 蒋天元来源 | 3D视觉工坊(ID: QYong_2014)这一篇的内容主要要讲一点在深度学习的3D目标检测网络中,我们都采用了哪些数据预处理的方法,主要讲两个方面的知识,第一个是representation,第二个数据预处…

NTLM协议认证

第一篇blog,发现这是个记录学习过程的好地方。从基础的开始吧。 NTLM: 基本知识telnet的一种验证身份方式,即Windows NT LAN Manager (NTLM); NTLM 是为没有加入到域中的计算机(如独立服务器和工作组)提供的…

新盒模型移动端的排版

这里采用的是新盒模型来进行排版&#xff1a; <div class"mytest">   <header></header>   <section></section>   <footer></footer> </div> 在CSS样式里添加如下样式 html,body{ height: 100%; } .mytest{ …

微信跳一跳高分辅助踩坑

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2018/01/08/wechat_jump_hack/ 最近挺火的微信跳一跳 最近新版微信的『跳一跳』小程序着实火了一把&#xff0c;也把小程序这个概念再次推波助澜了一波&#xff0c;看来以后小程序这个入口会有大作为。 张小…

“编程能力差,90%的人会输在这点上!”谷歌开发:其实都是在瞎努力

这是一个很难让人心平气和的年代。疫情之下&#xff0c;很多人的都在面临着&#xff1a;失业、降薪、找不到工作、随时被裁等风险。但是&#xff1a;有心的人早已上路超车&#xff0c;做个人能力的升级——提高自己的不可替代性。李开复曾提出过“五秒钟准则”&#xff1a;一项…

64位win7安装IIS7时不能浏览asp的问题

64位win7高级家庭版安装IIS7&#xff0c;安装完成后只能浏览静态页&#xff0c;找了很多的教程都没有解决&#xff0c;最后在一个博客里看到说64位系统下ASP是不支持的ODB读取ACC的数据库的&#xff0c;因此需要开启32位应用程序的支持。 方法是&#xff1a; Internet 信息服务…

0525 项目回顾7.0

一、sprint总结 当谈到团队&#xff0c;我开始真的不知道团队是怎么样的&#xff0c;怎么样进行工作的&#xff0c;要该怎么出力团队的关系&#xff0c;有时候会涉及到个人问题&#xff0c;是不是该考虑进来&#xff0c;但是很多时候是不能的&#xff0c;每一个人作为团队的一份…

辩证看待 iostat

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2018/01/16/using-iostat-dialectically/ 前言 经常做系统分析会接触到很多有用的工具&#xff0c;比如 iostat,它是用来分析磁盘性能、系统 I/O 的利器。 本文将重点介绍 iostat 命令的使用&#xff0c;并…

搞机器学习,Python和R哪个更合适?

【编者按】如果你正想构建一个机器学习项目&#xff0c;但却纠结于如何选择编程语言&#xff0c;这篇文章将是你所需要的。这篇文章不仅帮助你理解Python和R这两种语言的区别&#xff0c;还有助于你了解各个语言多方面的优势。作者 | Manav Jain译者 | Joe&#xff0c;编辑 | 夕…

Java安装方法

第1章 Java简介及开发环境搭建 实验1 JDK的下载、安装与配置 【实验目的】 &#xff08;1&#xff09;熟悉JDK工具包的下载及安装过程。 &#xff08;2&#xff09;掌握JAVA_HOME、CLASSPATH及Path的设置内容。 &#xff08;3&#xff09;掌握Java程序运行原理及Javac、Java命…

Hash函数的安全性

我们为了保证消息的完整性&#xff0c;引进了散列函数&#xff0c;那么散列函数会对安全正造成什么影响呢&#xff1f;这是需要好好研究一番的问题。 三个概念&#xff1a; 1.如果y<>x&#xff0c;且h&#xff08;x&#xff09;h&#xff08;y&#xff09;&#xff0c;则…

一键安装python3环境

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2018/04/15/python3_in_a_box/ 一键安装python3环境 由于现在逐步转移到 python3 进行开发&#xff0c;但是很多机器并没有预装 python3 环境&#xff0c;所以需要安装。 所以分享一个我常用的&#xff0c…

认知智能再突破,阿里 18 篇论文入选 AI 顶会 KDD

作者 | 马超责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;近日&#xff0c;国际知识发现与数据挖掘协会KDD在官网(https://www.kdd.org/kdd2020)公布其2020年度的论文收录结果&#xff0c;笔者看到阿里共有18篇论文入选&…

python采集cpu信息

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2018/05/20/analyze_cpu/ python脚本采集cpu 经常要做一些 linux 系统上的性能分析或者采集 cpu/mem/bandwidth 上报到监控系统。 分享一个我平常常用到的 cpu 采集脚本&#xff0c;原理是分析 /proc/stat…

Pretty Login便携版:Windows 7登录界面修改器

Pretty Login是由chnable开发的一个美化小工具&#xff0c;用来辅助修改Widnows 7登陆界面的背景图片&#xff0c;除此之外&#xff0c;它也能定制欢迎界面上的文本、按钮样式&#xff0c;如设置阴影、半透明效果。 由于Windows 7限制登录背景图片的大小不超过255KB&#xff0c…

来了来了!趋势预测算法大PK!

作者 | 王哲责编 | Carol头图 | CSDN 付费下载自视觉中国趋势预测在很多应用场景中都会起到至关重要的作用&#xff0c;比如淘宝商家会考虑库存量应该保持在多少才能够满足客户需求&#xff0c;商场希望得知假期会迎来多大的客流量以安排系列活动&#xff0c;机场想要预测五一黄…

hdu 5713(状态压缩DP)

要进行两次dp&#xff0c; 第一个&#xff0c;dp[i],1<i<(1<<n) 其中用i的二进制形式表示已选择的点。 dp[i] 用来保存i中的点构成一个连通块&#xff0c;边集多少种可能。 转移方程&#xff1a; save[0] 1;//这里用save[i]表示dp[i]for(int i1;i<(1<<n)…

nginx特定的 404页面利于seo

要求&#xff1a;访问http://www.qq.com/123 url保持不变 显示的结果为指定的404页面curl -I http://www.qq.com/123 返回的状态码为404 准备一 404.php页面在最底部加上&#xff1a;<?phpheader(HTTP/1.1 404 Not Found);header(Status: 404 Not Found);?>然后ngin…

python采集bandwidth信息

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2018/05/21/analyze_bandwidth/ python脚本采集bandwidth 经常要做一些 linux 系统上的性能分析或者采集 cpu/mem/bandwidth 上报到监控系统。 分享一个我平常常用到的 bandwidth 采集脚本&#xff0c;原理…

零基础搭建个性化精准营销 AI 应用,这次手把手教你!

百万学AI系列AI 应用开发大师课已经直播两期了&#xff0c;在前两期的内容中&#xff0c;大家在入门级任务《猫狗分类器》中上手 TensorFlow 开发&#xff0c;通过离线 SDK 在 Android 手机中完成人脸识别应用的部署。在这两个任务中&#xff0c;能成功安装开发环境&#xff0c…

C++数据类型简析

C语言的基本数据类型有如下四种&#xff1a; 整型&#xff0c;说明符为int&#xff1b;字符型&#xff0c;说明符为char&#xff1b;浮点型&#xff08;又称实型&#xff09;&#xff0c;说明符为float&#xff08;单精度&#xff09;&#xff0c;double&#xff08;双精度&…

浅谈几种区块链网络攻击以及防御方案之51#37攻击

旧博文&#xff0c;搬到 csdn 原文&#xff1a;http://rebootcat.com/2020/04/11/network_attack_of_blockchain_51_attack/ 写在前面的话 自比特币诞生到现在&#xff0c;比特币&#xff08;网络&#xff09;经历过大大小小非常多次的攻击&#xff0c;尤其在比特币诞生之初的…

全球Python调查报告:Python 2正在消亡,PyCharm比VS Code更受欢迎

作者 | 唐小引题图 | 自东方 IC出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;一年一度的 Python 开发者调查报告终于发布了。该报告由 Python 软件基金会和 JetBrains 联合发起&#xff0c;已经持续三年&#xff0c;并且参与调查的开发者人数正在逐年上…

中兴V880使用手记之五——刷入recovery

Recovery是安卓系统的一个特殊工作模式&#xff0c;也就是一个刷机的工程界面&#xff0c;给安卓手机刷入Recovery相当于给系统安装了一个dos界面&#xff0c;可以在未开机的状态下&#xff0c;实现系统更新、还原出厂设置、清除手机缓存等。通过一些第三方工具&#xff0c;可以…

windows 系统常用操作

1、所有端口使用情况 netstat -ano 2、查询xxxx端口pid netstat -aon|findstr "xxxx" 3、根据端口Pid查详情 tasklist|findstr "pkd" 4、根据进程pid kill 进程 taskkill /pid pid -f 转载于:https://www.cnblogs.com/vitre/p/5549344.html