网站投票怎么做,南昌诚推网络技术有限公司,e福州app官方下载,公司网站建设组织架构我撰写本文原来的意图是想把“复制SSH渠道”和copy SSH Session这样的功能从远程ssh客户端中剔除掉.因此想到可以在SSH服务端设置一下#xff0c;但查阅了sshd_config的man手册,发现里面的看起来限制ssh连接数量的参数(MaxSessions #xff0c;ClientAliveCountM…我撰写本文原来的意图是想把“复制SSH渠道”和copy SSH Session这样的功能从远程ssh客户端中剔除掉.因此想到可以在SSH服务端设置一下但查阅了sshd_config的man手册,发现里面的看起来限制ssh连接数量的参数(MaxSessions ClientAliveCountMax等)在复制SSH渠道中并不好用即一个远程ssh客户端可以通过这种方式几乎无限制的建立ssh会话未免让人觉得“不爽”。例如我正在做一件事情突然想出去但我不想改变当前终端中的任何操作也不想让别人在我出去后过来动我正在做的工作那我可以简单的按下CtrlS来锁定终端数据输入输出(尽管输入并不能锁定但输入将对用户不可见)当我回来时可以再通过按下CtrlQ来解除“屏幕锁定”这样不熟悉Linux的同事就不会来干扰我的工作而不用锁定整个系统。但自己却知道我可以通过复制SSH渠道/会话的方式来建立一个可用的新的SSH连接而这样的操作在以后繁杂的工作中是不可能逐一去查看的因此想直接写个shell脚本来实现这个需求。思路还是比较简单的代码也没有几行。首先这个脚本一定有循环这样才能起到持续化监测的能力通过命令不断的查询sshd端口的连接用户和每个用户的连接数量如果数量超过我设定的最大连接数量则再通过命令找到这些连接的会话再通过命令结束这些会话从而实现目的。但这其中有几个问题需要考虑用户按键特别是快捷键(如CtrlDCtrlC或Ctrl\等的处理)pts的数值可能会shell脚本中的最大值除非新登录的用户的pts数值只增加不减少PAM安全模块也许有更好的解决方案(shell脚本肯定不是最佳方案)通过测试的脚本如下#!/bin/bash# This shell script will knock out extra ssh connection# max_number_of_ssh_clientmax_number_of_ssh_client3# lsof is essentialif [[ ! -x which lsof ]]; thenyum install lsof -yRETVAL$?if [[ $RETVAL -ne 0 ]]; thenecho ERROR: can NOT use lsof command, please check your internet connection or install lsof by manual! exit $RETVALfielse# TODO# for awk, grep, etcecho SUCCESS: This shell script will knock out extra ssh connection fi# a main worker# loopwhile : ; dossh_portnetstat -anopt | grep sshd | awk {print $4} | awk -F : {print $2} | grep -v ^$ | uniq ssh_clientslsof -i:$ssh_port | grep \ | awk {print $9} | awk -F : {print $(NF-1)} | uniq | awk -F {print $2}for ssh_client in $ssh_clients; donumber_of_ssh_clientlsof -i:$ssh_port | grep $ssh_client | wc -lif [[ $number_of_ssh_client -gt $max_number_of_ssh_client ]]; thennumber_ptsw -hs | grep $ssh_client | awk {print $2} | awk -F / {print $2} | awk BEGIN {max0} {if ($1max) max$1 fi} END {print max}# TODO# another solution maybe exist# kill extra loginspkill -kill -t pts/$number_ptsif [[ $? -eq 0 ]]; thenecho SUCCESS: extra connections $ssh_clientpts/$number_pts has been knocked out! elseecho WARNNING: can NOT knock out extra connections! fielse# TODO# too many INFO displayedecho INFO: number of ssh connections is NORMAL! # sleep 1sleep 1fidonedone注释脚本中的几个TODO可以多考虑考虑其次里面的蹩脚英语请自行略过:)