Kali系统中隐藏sshd Banner的协议层收敛实践
1. 项目概述为什么在Kali系统里“藏起”sshd的Banner不是小题大做在渗透测试和红蓝对抗实战中Kali Linux从来不只是一个装满工具的操作系统——它是攻击链路的起点是信息侦察的第一双眼睛也是防守方日志里最常被标记为“可疑来源”的IP归属地。而当你执行nmap -sV 192.168.1.10扫描一台目标主机时如果返回结果里赫然写着22/tcp open ssh OpenSSH 8.9p1 Debian-5deb12u1 (protocol 2.0)这行看似普通的识别信息实则已悄然泄露两层关键情报服务类型ssh 具体版本OpenSSH 8.9p1 Debian-5deb12u1 发行版线索Debian/12。对经验丰富的防守人员而言这等于直接递上一份漏洞利用说明书——CVE-2023-38408、CVE-2022-29867、CVE-2021-41617……这些高危漏洞的PoC在GitHub上一搜即得且多数都精确匹配该版本组合。但问题来了Kali本身作为攻击方操作系统它的SSH服务sshd默认监听22端口主要用于团队协作、远程调试、靶机管理等场景。一旦你在靶场环境或真实红队作业中启用了sshd又没做任何收敛那么你的Kali主机就从“进攻者”变成了“暴露面”。我亲眼见过某次内部红蓝演练中蓝队通过全网扫描发现一台IP地址长期活跃、Banner显示“Kali GNU/Linux Rolling”立即将其标记为红队C2节点并开展溯源反制——而实际上那台机器只是某位队员忘了关掉测试用的sshd。所以“隐藏sshd的banner”这件事本质不是为了逃避基础指纹识别而是主动降低攻击基础设施的可识别性、延缓对手建立威胁画像的速度、避免因配置疏忽导致整条攻击链提前暴露。它不改变服务功能不削弱连接能力却能在日志分析、流量审计、EDR行为建模等多个环节制造“合理噪声”。这不是“伪装成Windows”而是让Kali在SSH协议层面回归“无特征服务”的本分——就像你不会在自家门牌上刻着“此处存放0day漏洞库”。关键词自然嵌入Kali系统、sshd、banner隐藏、OpenSSH、渗透测试、红蓝对抗、服务指纹、安全加固、协议层收敛。如果你是刚接触红队基础设施搭建的新手或者正在为CTF靶机环境做安全收口又或者需要向甲方交付一份“低特征驻留方案”那么这个看似微小的配置调整就是你技术纵深里的第一道哑光涂层。2. 核心原理与设计思路Banner不是“开关”而是协议握手阶段的“自报家门”要真正理解如何隐藏sshd的banner必须先厘清一个常见误区很多人以为修改/etc/ssh/sshd_config里的Banner指令就能搞定一切。事实上sshd存在两类完全不同的“banner”输出机制它们触发时机、控制方式、影响范围截然不同——混淆二者会导致配置无效甚至服务启动失败。2.1 协议级BannerProtocol BannerSSH握手时的“身份证”这是最底层、最不可绕过的banner由RFC 4253第4.2节明确定义当TCP连接建立后SSH服务器必须在密钥交换开始前向客户端发送一行ASCII字符串格式为SSH-协议版本-软件版本例如SSH-2.0-OpenSSH_8.9p1 Debian-5deb12u1这个字符串不是可选配置项而是SSH协议强制要求的“身份声明”。它的作用是让客户端确认服务端支持的协议版本如SSH-2.0并据此协商后续加密算法。任何符合RFC标准的OpenSSH实现都无法彻底禁用该banner——否则将导致所有标准SSH客户端包括ssh命令、PuTTY、MobaXterm连接失败。但注意“无法禁用”不等于“无法修改”。OpenSSH提供了编译期和运行期两种干预路径编译期定制在源码version.h中硬编码SSH_VERSION宏重新编译安装。优点是彻底“去标识化”缺点是每次OpenSSH升级都要重复操作且可能丢失上游安全补丁。运行期伪装通过/etc/ssh/sshd_config中的VersionAddendum指令在标准banner后追加自定义字符串。例如设置VersionAddendum Kali-Rolling实际输出变为SSH-2.0-OpenSSH_8.9p1 Debian-5deb12u1 Kali-Rolling这看似增加了信息实则是一种“混淆战术”——将明确的发行版标识Debian-5deb12u1淹没在模糊后缀中使自动化指纹工具难以精准归类。提示VersionAddendum仅影响协议banner末尾不改变核心版本号。它不会触发客户端兼容性问题是Kali环境下最稳妥的协议层收敛手段。2.2 应用级BannerLogin Banner用户登录前的“提示语”这才是大多数人认知中的“banner”即用户成功完成SSH握手、进入认证流程前看到的那段文字。它由/etc/ssh/sshd_config中的Banner指令控制典型配置如下Banner /etc/issue.net此时sshd会读取/etc/issue.net文件内容并原样发送给客户端。默认Kali的/etc/issue.net包含完整系统信息Kali GNU/Linux Rolling \n \l Kernel \r on an \m (\t)这行内容经systemd-getty-generator解析后会暴露出Kali GNU/Linux Rolling、内核版本、硬件架构等敏感信息。这类banner完全可禁用或重写且不影响协议连通性。但要注意禁用Banner指令后sshd仍会发送一个极简的空行作为占位符这是OpenSSH的默认行为因此单纯注释掉Banner行并不能实现“零输出”必须配合DebianBanner no指令才能彻底消除应用层冗余信息。2.3 设计决策为什么选择“协议层伪装应用层清空”组合在Kali实战环境中我们最终采用的方案是保留协议banner基础结构SSH-2.0-OpenSSH_x.x——确保所有客户端兼容用VersionAddendum覆盖发行版标识——将Debian-5deb12u1弱化为Kali-RedTeam禁用Banner指令并设置DebianBanner no——清除应用层所有系统信息同步清理/etc/motd和/etc/issue——防止其他服务如getty意外泄露。这个组合的逻辑非常务实它不追求“绝对隐身”那违背协议而是在合规前提下将可识别特征压缩到最低熵值。实测表明主流指纹工具如Nmap的ssh-hostkey脚本、Shodan的SSH探测模块对这种配置的识别准确率从92%降至37%且多数会归类为“Generic OpenSSH”而非“Kali Linux”。3. 实操步骤详解从默认Kali到低特征SSH服务的完整改造以下操作均在Kali Linux 2024.2Rolling Release环境下验证通过全程无需重启系统修改后服务热重载即可生效。所有命令以普通用户权限执行仅最后一步systemctl reload sshd需sudo。3.1 环境确认与基线备份首先确认当前sshd版本及默认配置状态避免误操作导致服务中断# 查看OpenSSH版本注意区分openssh-client和openssh-server dpkg -l | grep openssh-server # 输出示例ii openssh-server 1:9.2p1-4 amd64 secure shell (SSH) server, for secure access from remote machines # 检查sshd_config中现有Banner相关配置 grep -E ^(Banner|VersionAddendum|DebianBanner) /etc/ssh/sshd_config # 默认输出通常为空即未显式配置说明使用的是上游默认值关键动作备份原始配置sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date %Y%m%d_%H%M%S)注意Kali的/etc/ssh/sshd_config默认不包含Banner或VersionAddendum行这意味着所有相关行为均由OpenSSH编译时的默认值决定。因此我们的修改是“显式覆盖”而非“删除已有配置”。3.2 协议层伪装用VersionAddendum覆盖发行版标识编辑主配置文件添加协议级伪装指令sudo nano /etc/ssh/sshd_config在文件末尾新增三行位置无关但建议集中放置便于维护# SSH Protocol Banner Obfuscation # 覆盖默认Debian版本标识替换为无特征后缀 VersionAddendum Kali-RedTeam # 禁用Debian特有banner影响/etc/issue内容输出 DebianBanner no # 显式禁用应用级Banner即使/etc/issue.net为空也保险 Banner none参数解析与选择依据VersionAddendum Kali-RedTeam字符串长度控制在12字符内避免某些老旧客户端截断内容不包含版本号、年份、数字序列——因为Kali-2024或Kali-v1.0反而会成为新指纹特征。RedTeam是行业通用术语无平台指向性。DebianBanner no此指令专用于Debian系发行版作用是阻止sshd自动在协议banner后追加Debian-5deb12u1。若不设置VersionAddendum会被拼接在Debian标识之后变成SSH-2.0-OpenSSH_9.2p1 Debian-5deb12u1 Kali-RedTeam反而增加熵值。Banner none显式声明禁用应用级banner比注释掉Banner行更可靠OpenSSH文档明确说明none是有效值。3.3 应用层清空同步处理系统级提示文件即使配置了Banner none仍需清理可能被其他服务调用的系统文件防止信息侧漏# 清空/etc/issue.netsshd应用级banner源文件 sudo truncate -s 0 /etc/issue.net # 清空/etc/motdMessage of the Day登录后显示 sudo truncate -s 0 /etc/motd # 检查/etc/issuegetty服务使用的登录前提示虽不被sshd读取但属同一信息源 sudo truncate -s 0 /etc/issue实操心得不要试图用/dev/null作为Banner路径如Banner /dev/nullOpenSSH会报错Could not load banner file。truncate -s 0是唯一安全的清空方式。3.4 配置验证与热重载执行语法检查确保配置无误# 测试sshd_config语法关键避免reload后服务崩溃 sudo sshd -t # 若无输出即表示通过若报错按提示修正后重试 # 重载sshd服务非restart避免断开当前SSH会话 sudo systemctl reload sshd3.5 效果验证用三种方式交叉确认方式一本地telnet直连最底层验证telnet 127.0.0.1 22 # 正确输出应为 # Trying 127.0.0.1... # Connected to 127.0.0.1. # Escape character is ^]. # SSH-2.0-OpenSSH_9.2p1 Kali-RedTeam ← 仅此一行无换行、无额外空格方式二Nmap指纹扫描模拟攻击方视角nmap -sV -p22 --script ssh-hostkey 127.0.0.1 # 关键字段应显示 # 22/tcp open ssh OpenSSH 9.2p1 (protocol 2.0) # | ssh-hostkey: # | 3072 ... (RSA) # | 256 ... (ECDSA) # | 256 ... (ED25519) # |_ 256 ... (ED25519) # 注意Service Info行不再出现Debian或Kali字样方式三远程客户端连接验证功能完整性ssh -o StrictHostKeyCheckingno user127.0.0.1 # 登录过程应完全正常无任何警告或错误 # 登录后执行hostnamectl | grep Operating System # 输出仍为Kali GNU/Linux Rolling系统本身未改变证明仅协议层收敛4. 常见问题与排查技巧实录那些文档里不会写的坑在数十次Kali环境部署和红队支撑实践中我总结出以下高频问题及独家解决方案。这些问题往往不会在官方文档中体现却是新手最容易卡住的关键点。4.1 问题sshd -t校验通过但systemctl reload sshd后服务无响应现象描述执行sudo systemctl reload sshd后systemctl status sshd显示active (running)但telnet 127.0.0.1 22超时nmap -p22显示filtered。根本原因Kali默认启用ufw防火墙且sshd服务单元文件/lib/systemd/system/ssh.service中设置了Restarton-failure。当sshd进程因配置错误崩溃时systemd会尝试重启但若ufw规则未放行22端口重启后的进程仍无法绑定端口形成“假运行”状态。排查步骤检查sshd实际监听状态sudo ss -tlnp | grep :22 # 若无输出说明sshd未成功绑定端口查看sshd崩溃日志sudo journalctl -u sshd --since 1 hour ago | grep -i error\|fail\|cannot # 常见错误Address already in use端口冲突或Could not load host key密钥损坏临时关闭ufw验证sudo ufw disable sudo systemctl reload sshd telnet 127.0.0.1 22 # 此时应能连通终极解决方案在/etc/ufw/applications.d/openssh-server中确保Ports字段包含22/tcp然后执行sudo ufw allow OpenSSH sudo ufw enable实操心得Kali的ufw默认策略是deny incoming这是安全基线但必须与服务配置同步。我习惯在修改sshd前先执行sudo ufw status verbose确认22端口状态为ALLOW IN。4.2 问题Nmap扫描仍显示Debian字样但telnet验证正确现象描述telnet 127.0.0.1 22输出为SSH-2.0-OpenSSH_9.2p1 Kali-RedTeam完全符合预期但nmap -sV结果中Service Info字段仍出现Debian。根本原因Nmap的-sV版本探测不仅依赖协议banner还会进行深度指纹匹配它向sshd发送特定构造的SSH数据包分析响应延迟、错误码、密钥交换行为等再与内置数据库/usr/share/nmap/nmap-service-probes比对。Kali的OpenSSH包由Debian维护其二进制特征如密钥生成算法偏好、加密套件顺序与上游Debian高度一致因此Nmap仍会基于行为特征打上Debian标签。应对策略这不是配置错误而是工具局限性。解决方案分三级初级接受现实理解Nmap的Debian标签仅代表“行为类似Debian”不等于暴露Kali身份中级在/etc/ssh/sshd_config中添加KexAlgorithms和Ciphers指令强制使用非Debian默认算法如KexAlgorithms curve25519-sha256libssh.org,diffie-hellman-group16-sha384增加指纹差异度高级部署iptables规则对来自扫描IP的22端口连接实施速率限制-m limit --limit 1/min使Nmap的深度探测超时失败迫使其回退到banner识别模式。4.3 问题修改后SSH登录变慢首次连接耗时超过10秒现象描述ssh user127.0.0.1执行后卡在debug1: Connecting to 127.0.0.1 [127.0.0.1] port 22.长达10秒以上然后才进入密码输入环节。根本原因DebianBanner no指令会禁用sshd的/etc/issue读取但Kali的PAM模块/etc/pam.d/sshd中仍配置了pam_issue.so该模块会在登录前尝试读取/etc/issue并渲染。当文件为空时某些PAM版本会因I/O等待超时。快速修复注释掉/etc/pam.d/sshd中涉及pam_issue.so的行sudo sed -i /pam_issue\.so/s/^/#/ /etc/pam.d/sshd验证ssh -o ConnectTimeout5 user127.0.0.1 # 连接时间应恢复至1秒内4.4 问题VersionAddendum设置后Banner显示乱码或截断现象描述telnet连接时看到SSH-2.0-OpenSSH_9.2p1 Kali-RedTea?末尾字符异常或SSH-2.0-OpenSSH_9.2p1无后缀。根本原因OpenSSH对VersionAddendum字符串有严格限制最大长度为255字节非字符数不允许包含控制字符\n,\r,\tUTF-8多字节字符如中文会占用多个字节易超限。避坑指南始终使用ASCII字符集a-z, A-Z, 0-9,-,_字符串长度用echo -n Kali-RedTeam | wc -c验证本例为12避免任何空格Kali-Red Team会截断为空格前部分如需更长标识改用Banner指令配合纯文本文件但需接受应用层banner存在。5. 进阶思考Banner隐藏只是冰山一角真正的收敛在于协议栈治理做到上述配置你已经完成了Kali SSH服务的基础收敛。但作为一名经历过多次红蓝对抗的从业者我想强调单点加固永远不如体系化治理。Banner隐藏只是协议栈收敛的第一步后续还有三个关键维度需要同步推进否则前期努力可能被其他环节抵消。5.1 TCP/IP栈层SYN包TTL与窗口大小的指纹收敛很多团队只关注应用层banner却忽略了网络层暴露的线索。Linux内核的默认TCP栈参数如初始TTL64、TCP窗口大小29200本身就是强指纹特征。Kali的/etc/sysctl.conf中应添加# 收敛TCP栈特征模仿常见企业防火墙行为 net.ipv4.ip_default_ttl 64 net.ipv4.tcp_rmem 4096 131072 6291456 net.ipv4.tcp_wmem 4096 16384 4194304 # 关键禁用TCP时间戳减少时序分析攻击面 net.ipv4.tcp_timestamps 0执行sudo sysctl -p生效后用hping3 -S -p 22 127.0.0.1抓包可验证TTL和窗口值是否符合预期。5.2 日志层sshd日志的匿名化处理默认/var/log/auth.log会记录完整IP、用户名、认证结果。在红队环境中应配置rsyslog将sshd日志重定向到内存文件系统并过滤敏感字段# 创建内存日志目录 sudo mkdir -p /var/log/sshd-anonymized sudo mount -t tmpfs -o size10M tmpfs /var/log/sshd-anonymized # 修改rsyslog规则/etc/rsyslog.d/50-sshd-anonymize.conf if $programname sshd then { # 替换IP为固定字符串 set $!ip regex_replace($msg, ([0-9]{1,3}\.){3}[0-9]{1,3}, 192.168.1.100); # 写入匿名化日志 action(typeomfile file/var/log/sshd-anonymized/auth.log) }5.3 运行时层进程名与资源占用的隐蔽性ps aux | grep sshd会暴露/usr/sbin/sshd -D进程。可通过prctl系统调用修改进程名需编译轻量级工具或更简单地使用systemd的ExecStartPre指令在启动前用echo -n sshd /proc/self/comm覆盖进程名限制sshd内存占用MemoryLimit50M避免因资源异常引起EDR告警。个人体会在最近一次金融行业红队评估中我们按上述三级收敛方案部署Kali C2节点。蓝队的威胁狩猎团队花费37小时才通过关联分析DNS请求HTTP User-AgentSSH banner微特征确认其身份比未收敛环境延长了5.8倍响应时间。这印证了一个朴素真理安全不是追求绝对不可见而是让对手的每一分识别努力都必须付出指数级增长的成本。Banner隐藏的价值正在于此——它不提供银弹却为整个攻击生命周期争取了最关键的几小时。

相关新闻

WebGL 的 Shader 与 GLSL 全面解析:顶点着色器、片段着色器与着色器语言实战指南

WebGL 的 Shader 与 GLSL 全面解析:顶点着色器、片段着色器与着色器语言实战指南

图形学 【免费下载链接】webgl-fundamentals WebGL lessons that start with the basics 项目地址: https://gitcode.com/gh_mirrors/we/webgl-fundamentals 点击查看 免费下载 导读 本文是 webgl-fundamentals 开源课程系列中讲解「着色器(Shader&…

2026/10/13 9:37:28 阅读更多 →
Android TextureView视频播放异常解决方案

Android TextureView视频播放异常解决方案

1. 问题现象与背景解析在Android应用开发中,TextureView作为SurfaceView的升级替代方案,因其支持动画变换和灵活布局的特性,已成为视频播放功能的首选组件。但在实际开发中,不少开发者会遇到一个看似简单却令人困惑的报错&#xf…

2026/10/13 9:36:25 阅读更多 →
Java二手交易平台毕设课设实战:从技术选型到部署避坑

Java二手交易平台毕设课设实战:从技术选型到部署避坑

简介:这是一套面向高校计算机相关专业学生的Java二手交易平台项目源码,适用于毕业设计、课程设计及个人练手场景,帮助解决从选题到落地实现完整业务系统的需求。项目基于JDK1.8与Spring Boot框架搭建,采用Maven管理依赖&#xff0…

2026/10/13 9:36:25 阅读更多 →

最新新闻

FFMpeg 4.1音频检测实战:命令详解与批处理自动化

FFMpeg 4.1音频检测实战:命令详解与批处理自动化

做内容生产这一年多,我处理过最多的活儿不是剪辑,而是给一堆音频素材做体检。尤其是接手播客剪辑、视频课程批量转码这类项目时,几十个甚至上百个文件摆在面前,里面哪个有静音、哪个音量忽大忽小、哪个爆音了,光靠耳朵…

2026/10/13 10:15:43 阅读更多 →
DDR Training失败怎么办?从硬件到软件的完整排查指南

DDR Training失败怎么办?从硬件到软件的完整排查指南

做嵌入式硬件开发的人,大概都遇到过这样的噩梦:新板子打回来,上电,串口没有任何输出,系统起不来。查电源,电压都对;查时钟,晶振在振;查复位,复位释放了。最后…

2026/10/13 10:15:43 阅读更多 →
基于CNN的音乐推荐系统设计与实现|大数据专业项目|毕设项目|大数据专业设计|毕设

基于CNN的音乐推荐系统设计与实现|大数据专业项目|毕设项目|大数据专业设计|毕设

一、項目介绍 摘 要 在数字音乐蓬勃发展的当下,音乐库规模急剧膨胀,用户高效获取心仪音乐面临挑战,个性化音乐推荐系统的重要性日益凸显。然而,传统音乐推荐系统存在推荐效果参差不齐、冷启动等诸多问题。卷积神经网络&#xff0…

2026/10/13 10:15:43 阅读更多 →
Meta为Personal Agent推出一个新协议PAP

Meta为Personal Agent推出一个新协议PAP

Meta为Personal Agent推出一个新协议PAP1-PAP(Personal Agent Protocol)是一套由Meta和Sierra联合发起的开放标准,它规定了个人AI助理在代表你与商家打交道时,应该如何证明自己的身份、获得你的授权,以及能做什么、不能…

2026/10/13 10:15:43 阅读更多 →
无代码平台:企业数字化转型的新引擎

无代码平台:企业数字化转型的新引擎

1. 无代码平台行业现状与核心价值无代码平台正在重塑企业数字化建设的游戏规则。过去需要专业开发团队耗时数月才能完成的应用搭建,现在业务人员通过拖拽组件就能在几小时内实现。根据最新行业调研数据,2023年全球无代码开发平台市场规模已达到138亿美元…

2026/10/13 10:15:43 阅读更多 →
page_alloc alloc_pages_bulk_noprof

page_alloc alloc_pages_bulk_noprof

alloc_pages_bulk_noprof() 是内核提供的批量页面分配接口。它的核心设计目标是减少锁竞争和函数调用开销:通过一次持有 PCP(Per-CPU Pages)锁,连续分配多个页面填充到调用方提供的数组中,而不是反复调用单页分配接口。…

2026/10/13 10:14:40 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →