测试sshd中maxstartup参数

本文介绍了一个使用Bash脚本进行SFTP登录的示例,通过控制`maxstartup`参数限制并发连接数,实现15个线程的登录尝试,记录登录成功和失败次数。

文件目录:/etc/ssh/sshd_config
maxstartup 是限制处于联机页面的连接数,有2种形式
三元形式:10:30:60表示当连接数到达10时,之后的连接有30的概率被拒绝掉,当连接数到达10时,之后的连接有30的概率被拒绝掉
数字形式:10 连接数达到10后,之后的连接全部拒绝

        因为此参数是表示同时连接总数,当时的想法是要么是10个进程并行,要么直接用for循环在命令后面加个&后台运行,最后选择的还是进程并行

#!/bin/bash
#定义变量
sftp_port=22
sftp_user=sftpadmin
sftp_ip=127.0.0.1
sftp_passwd=123123
#sftp登录判断函数
sftp_join(){
#echo ls |lftp -u $sftp_user,$sftp_passwd sftp://$sftp_ip:$sftp_port
/usr/bin/expect << EOF
spawn sftp  ${sftp_user}@${sftp_ip}
expect {
 "*password:" { send "${sftp_passwd}\r" }
 }
expect "sftp>"
send "bye \r"
EOF
if [ $? -eq 0 ]; then
	echo "登录成功"
else
	echo "登录失败!"
fi
}
#定义线程数
thread(){
>$0.log 
tmp_fifofile='$$.fifo'
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
thread_num=15
for ((i=0;i<${thread_num};i++));do
	echo
done >&6
}

#开始测试
start_time=`date +"%H:%M:%S"`

thread

for i in {1..15};do
	read -u6
	{
	#sleep 2
	#echo "success"$i
# 题目重述 当 `sshd` 的 PAM 配置文件中并不存在 `uid >= 1000` 相关语句时,为何仍出现该限制错误?如何定位并改正? --- # 详解 尽管 `/etc/pam.d/sshd` 文件中未显式写出 `auth required pam_succeed_if.so uid >= 1000`,但错误提示表明该规则已被加载。这通常是由于 **PAM 配置包含了其他配置文件** 所致。 Linux 的 PAM 支持通过 `@include` 或 `substack` 引入其他策略文件。例如: - `/etc/pam.d/sshd` 可能包含: ``` @include common-auth ``` - 而 `common-auth` 中可能有: ``` auth required pam_succeed_if.so uid >= 1000 quiet_success ``` 此规则会对所有引用它的服务(包括 sshd)生效,即使主文件中没有直接写明。 ### 改正步骤: 1. **检查包含的 PAM 文件** 查看 `/etc/pam.d/sshd` 是否包含如下行: ```bash grep -r "@include\|substack" /etc/pam.d/sshd ``` 常见引入文件:`common-auth`、`system-auth` 等。 2. **定位真正规则位置** 在被包含文件中搜索: ```bash grep "pam_succeed_if" /etc/pam.d/common-auth ``` 3. **修改或排除限制规则** 编辑对应文件(如 `/etc/pam.d/common-auth`),注释或调整: ```bash # auth required pam_succeed_if.so uid >= 1000 quiet_success ``` 4. **允许 root 登录(必要时)** 确保 `/etc/ssh/sshd_config` 包含: ```bash PermitRootLogin yes ``` 然后重启服务: ```bash sudo systemctl restart sshd ``` --- # 知识点 - **PAM 包含机制**:PAM 使用 `@include` 复用配置,规则可跨文件生效。 - **模块化认证设计**:Linux 认证通过堆叠模块实现,需全局排查。 - **pam_succeed_if.so**:条件判断模块,依据 UID、组、环境等控制认证流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值