我撰写本文原来的意图是想把“复制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 ssh最大会话数,Linux Shell 脚本限制ssh最大用户登录数相关推荐

  1. Linux系统中运行.sh(Shell脚本)文件

    本文转载自:百度经验:Linux下如何运行.sh文件 其中,以绝对路径运行方法: (1)./home/test/shell/hello.sh,可以这样运行是因为当前登录用户是root,当前路径是在/下 ...

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

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

  3. linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数

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

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

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

  5. Linux(12)-命令行的使用,shell脚本

    命令行的使用,shell脚本 1.终端shell,man 2.shell 编程 2.1 shell脚本 2.2 注释 2.3 指明所用的shell 2.4 支持函数 2.5 使用变量 2.6 解析命令 ...

  6. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  7. Linux配置脚本导出运行,linux服务器部署jar包以及shell脚本的书写

    背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中 ...

  8. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  9. linux 递归删除 空目录命令,使用shell脚本实现递归删除空目录

    平时一般使用php脚本实现一些文件管理功能,总归没有shell脚本强大,虽然本人不会写shell脚本,但是读懂shell脚本还是没问题的.对于"递归删除空目录"这样简单的功能使用p ...

最新文章

  1. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
  2. mongo执行逻辑表达式_MongoDB 高级查询
  3. leetcode 467. Unique Substrings in Wraparound String | 467. 环绕字符串中唯一的子字符串(动态规划)
  4. 牛客题霸 反转链表 C++题解/答案
  5. Linux Nano基础指南
  6. Linux 使用grep过滤多个条件及grep常用过滤命令
  7. 【Linux】Linux下 CURL如何发送http请求
  8. 挣钱难,做老板不易,特别是种植老板
  9. 在群晖synoboot.img引导文件中加入网卡驱动_群晖DS1819+使用记录
  10. String变量的两种创建方式
  11. 组件化,插件化和热更新
  12. 网页右侧在线客服html,漂浮在网页右侧的QQ在线客服代码? 1、怎么样修改以下代码,让其变为最靠右边2、如何插入到网页当中...
  13. apkg格式怎么打开_干货:pdf转换器简单、好用,还能在线互转文件格式
  14. 计算机软件能删除吗,怎么彻底清除电脑软件鲁大师?卸载对系统有影响吗?
  15. whois php,域名whois php
  16. mendix费用价格
  17. python2 unicode转换中文
  18. 输出100-200之间所有的素数(素数:只能被1和自己本身整除的数)
  19. 俩人同样写代码,我拿七千他咋一万八...
  20. 使用python创造照片马赛克

热门文章

  1. linux syslog 3
  2. Bailian4115 鸣人和佐助【BFS】
  3. UVA11645 Bits【位运算+大数】
  4. sklearn 与 xgboost 的组合使用
  5. 中英文对照 —— 手机 App/PC 端软件(系统)、互联网
  6. 囚徒困境、价格大战与 iPhone 的价格
  7. 标准模板库(STL)之无序容器列传
  8. 编程常见错误——循环中进行有符号数和无符号数的比较
  9. Linux下c语言实现通讯录,学生通讯录管理系统linux下C语言
  10. python程序员工资-均薪3万?Python程序员就业各岗位薪资一览,你拖后腿了吗?...