日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2025/3/12 linux 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我撰寫本文原來的意圖是想把“復制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最大用户登录数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。