JMX未授权访问漏洞自查与修复:四层防线加固指南
Java的JMXJava Management Extensions作为运行期监控和管理的标准机制几乎每个像样一点的Java服务都在用。但正因为太“标配”了很多人只是随手在启动脚本里加了一行-Dcom.sun.management.jmxremote.port9010却完全没意识到这个动作相当于把应用的前门钥匙挂在了门框上——JMX未授权访问是Java服务最容易出现、又最容易被忽视的高危漏洞之一。这篇文章讲的不是教科书级别的概念而是我实际排查和修复这类问题时的全套思路。包括JMX一旦暴露出去会带来什么后果、怎样在一台已经上线的机器上快速自证风险、从关闭端口到启用认证再到TLS双向加密的完整加固步骤以及容器化场景下怎么避免重蹈覆辙。不管你是运维、后端开发还是做安全自查的同学照着后面的清单走一遍基本能把这条攻击路径给堵死。1. 漏洞全貌JMX暴露出去到底意味着什么1.1 JMX的职责边界与被忽略的攻击面JMX本身是Java平台提供的一套管理框架核心是MBean。你可以把MBean理解成应用对外开放的可操作“旋钮”和“仪表盘”——有读状态的比如内存、线程数、GC次数也有写操作的比如动态修改日志级别、触发GC、热更新配置。这套机制设计出来就是为了方便运维和监控所以它的能力边界天然就很大。最典型的就是java.lang.Runtime这个MBean里面带了exec方法。也就是说如果能连上JMX接口并且拥有读写权限基本上等同于拿到一个可以执行系统命令的入口。很多JVM指标采集工具、性能调优工具都依赖JMX这也导致它在生产环境里的存在感极强但安全存在感极弱。问题出在哪出在JDK的默认策略上。如果你在启动参数里只配了com.sun.management.jmxremote.port而没有配authenticate那JMX端口就是完全裸奔的。更有意思的是即便你配了authenticatetrue如果密码文件的权限设置不对JVM会直接忽略这个配置并拒绝启动或者退回到不加载认证的状态。这一系列默认行为和“配置一下能跑就行”的惯性让JMX成了攻击者最喜欢光顾的Java攻击面之一。1.2 从“看不到密码”到“拿到服务器权限”的完整链路攻击者拿下JMX未授权访问的路径大致分三步第一步探测端口。JMX默认端口一般是1099还有非常常见的9010、9999、8686。攻击者扫到这些端口之后用工具尝试做RMI握手。RMI握手不需要任何账号密码只要端口通就能拿到服务端的对象信息。第二步枚举MBean。拿到连接之后攻击者会列出所有注册的MBean。注意这一步在未授权状态下也能完成因为JMX的MBeanServer默认不会对列举操作做拦截。这里面就会出现java.lang.Runtime、com.sun.management.*这类高危目标。第三步调用危险方法。以javax.management.loading.MLet为例这个MBean允许动态加载远程jar包。攻击者可以在自己的服务器上放一个恶意jar然后让目标的MLet去加载并实例化从而实现任意代码执行。再配合Runtime的exec方法一条稳定的命令执行链路就出来了。这条链路里没有任何暴力破解也不需要猜密码纯粹是配置不当导致的“门没锁”。这也就是为什么各类安全扫描器把JMX未授权访问列得很靠前——利用成本极低危害却直接拉满。1.3 最容易踩雷的三类部署方式从我接手过的案例来看出事的基本逃不出下面三类情况第一类是开发自测环境直接套用到生产。开发机上的启动脚本通常为了省事直接写-Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse顺手复制到生产就直接跑。配置是能跑但等于把监控端口变成了后门。第二类是只改端口、不改鉴权。有同学觉得默认端口1099太显眼改成9020、9010之类的高位端口就安全了。实际上端口混淆对专业扫描器来说一点意义都没有固定端口的RMI服务只要放出去扫描识别只是几分钟的事。第三类是用了监控产品但路径暴露。比如通过JMX给可视化监控大屏供数据监控产品本身没问题但JMX端口直接暴露在业务网段没有做网络层面的来源限制。这样一旦攻击者进入内网比如通过某个Web应用漏洞就能顺手摸到JMX口。2. 自查与风险评估先确认自己到底有没有裸奔2.1 本机五分钟自查端口、进程参数、JMX状态在没有安全检查工具的情况下在一台业务服务器上最快验证JMX是否裸奔我一般分三步先看端口监听状态ss -tlnp | grep java重点关注是否有进程在监听9010、1099、8686这类端口以及监听地址是0.0.0.0还是127.0.0.1。只要看到0.0.0.0或者*:port就说明该JMX端口对全网卡开放风险等级直接拉高。然后看Java进程的启动参数ps aux | grep java或者用jcmd命令拿运行时参数jcmd pid VM.command_line重点找这么几个关键词com.sun.management.jmxremote、authenticate、ssl、password.file、access.file。如果看到authenticatefalse基本可以断定是未授权状态如果看到authenticatetrue但没有对应的password文件或者文件路径不存在JVM大概率根本没启用认证。最后就是实际操作验证一下。用本机的jconsole连接localhost:9010如果没有任何账号密码提示直接就进去了那不需要再怀疑什么赶紧往下看修复部分。2.2 远程视角的探测方法如果你是在做安全自查想从一个攻击者的视角确认风险可以用一些端口扫描工具做无害探测。这属于合规的安全测试不是让你去越权攻击务必在自己负责或有书面授权的范围内进行。nmap -sT -p 9010 --open 目标IP端口open只是第一步还要确认它是不是JMX RMI。可以用一些支持RMI协议识别的工具也可以在拿到连接后用JMX客户端工具尝试列MBean如果无需凭据就返回了一大串对象名那就实锤了。这里有个容易被忽视的点JMX RMI服务在握手阶段的响应是有特征的。它返回的序列化数据里包含java.rmi.server.UnicastRef等字面量扫描工具靠这些特征做指纹识别。如果你只是把端口从9010改成18000指纹并不会消失只是多耗一点扫描时间而已。2.3 被利用后的典型痕迹与排查思路如果你怀疑JMX已经被扫过甚至被利用过可以重点排查下面几个地方看异常进程。JMX被利用后最常见的动作就是启动一个临时进程来反弹shell或者下载执行恶意jar。排查时可以对比当前Java进程列表找有没有异常的子进程。用ps -ef --forest能比较直观地看到进程树。看网络连接。恶意shell的通信链路上经常会有外联IP用ss -tnp | grep ESTAB看看除了业务节点之外有没有不明IP在建立长连接。特别注意来自非业务网段的地址。看应用日志。JMX本身不打印访问日志这是个很棘手的地方。但MLet加载远程jar时JVM通常会在日志里留下ClassNotFound之类的异常记录。如果发现日志里有大量和javax.management.loading相关的异常就要格外警惕。看文件系统。检查/tmp、应用安装目录下有没有可疑的jar文件尤其是那种名字很随意、大小只有几KB的jar。再检查定时任务攻击者很可能通过JMX写入了一个crontab来维持持久化。2.4 用一张表快速判断风险等级为了让你有个直观的参照我把自查中最常见的几种情况按风险从高到低排了个表配置状态监听范围风险等级判定依据未配置认证未配置SSL0.0.0.0:9010极高可直接远程连接并执行MBean方法配置了认证密码文件权限过宽0.0.0.0:9010高密码文件不生效JVM拒绝加载或降级配置了认证和SSL0.0.0.0:9010中需要窃取证书或口令才能进一步利用未配置外部JMX端口仅本地socket低默认不产生远程暴露面使用专用监控代理JMX仅绑127.0.0.1127.0.0.1:动态端口低网络层不可达代理侧做采集3. 修复与加固从裸奔到可控的四层防线3.1 不需要远程访问直接关闭端口修复JMX未授权访问最彻底的方案不是加密也不是加认证而是直接不给它开远程端口。你要检查启动脚本里有没有这一行-Dcom.sun.management.jmxremote.port9010如果业务不需要外部连接JMX直接把这行删掉只保留-Dcom.sun.management.jmxremote或干脆什么都不加。注意一个关键区别仅仅有com.sun.management.jmxremote而没指定端口JVM只会在本机创建管理代理不会监听远程端口。如果你担心本机工具连不上可以加上-Dcom.sun.management.jmxremote.local.onlytrue这个参数会强制JMX拒绝来自非本机地址的连接。在JVisualVM等工具远程连不上没关系这正是我们要的效果——你要用监控本机连就通过跳板机或本地端口转发连。实际操作中我遇到过一种情况开发改完脚本忘了重启端口还挂着。记得在修改启动参数后完整重启应用重启完再用ss -tlnp确认9010已经不存在。3.2 必须远程访问时的最小暴露配置如果确实需要远程连接JMX比如部署在机房里的应用监控系统需要跨机器采集指标那就要配最小暴露面的参数组合。我惯用的配置是这样-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port9010 -Dcom.sun.management.jmxremote.rmi.port9010 -Dcom.sun.management.jmxremote.authenticatetrue -Dcom.sun.management.jmxremote.ssltrue -Dcom.sun.management.jmxremote.password.file/opt/monitor/jmxremote.password -Dcom.sun.management.jmxremote.access.file/opt/monitor/jmxremote.access -Dcom.sun.management.jmxremote.ssl.need.client.authtrue -Djava.rmi.server.hostname10.10.10.20解读一下几个容易踩坑的参数com.sun.management.jmxremote.rmi.port一定要和port保持一致或者明确设成另一个固定端口。如果不设这个参数JVM会随机分配一个RMI导出端口这就导致即使你只开放了9010的防火墙攻击者也能通过扫描随机端口找到RMIServer。很多加固方案只堵了第一个端口漏了第二个等于白干。java.rmi.server.hostname要设为网卡上的实际IP或者一个能被监控端解析到的主机名。不设置的后果是RMI返回的内嵌地址可能指向localhost或容器内网IP导致连不上或连接被错误转发。这个参数看着不起眼但不配好会出现很诡异的网络故障。3.3 认证与授权密码文件、访问文件与权限三件套启用认证需要准备两个文件密码文件和访问控制文件。密码文件里的格式是monitorRole you_strong_password_here controlRole another_strong_password_here左边是用户名右边是密码。我强烈建议至少创建两个不同权限的角色监控用一个只读角色管理用一个读写角色不要把监控平台的账号和运维管理账号混在一起。访问控制文件里的格式是monitorRole readonly controlRole readwrite文件名可以自定义但密码文件有几个硬性要求必须存放在应用运行用户可读取的路径最好不要放在web目录、临时目录这类可被其他进程读取的地方。更关键的是文件权限必须严格控制在Linux环境下chown appuser:appgroup /opt/monitor/jmxremote.password chmod 600 /opt/monitor/jmxremote.password chmod 600 /opt/monitor/jmxremote.access为什么要强调这个权限因为JDK在加载密码文件时会检查文件权限如果不是当前用户专用它会拒绝使用这个文件并打印警告。我看到过不少案例配置文件写对了但权限是644结果JVM压根没导入认证配置端口还是裸奔的。配置完成后在启动日志里找这条信息Password file authentication enabled如果没有出现说明认证没起来。3.4 TLS加密与双向认证光有密码还不够密码在网络传输中如果走明文用抓包工具就能直接看到凭据。所以ssltrue必须配上。启用JMX的TLS需要准备好keystore和truststore。简单说keystore存放服务器自己的证书truststore存放需要信任的客户端证书做双向认证时。生成自签名证书的简化步骤# 生成服务器端keypair keytool -genkeypair -alias jmx-server -keyalg RSA -keystore server.jks -storepass changeit # 导出服务器证书 keytool -exportcert -alias jmx-server -keystore server.jks -file server.crt # 生成客户端keypair keytool -genkeypair -alias jmx-client -keyalg RSA -keystore client.jks -storepass changeit # 导出客户端证书 keytool -exportcert -alias jmx-client -keystore client.jks -file client.crt # 服务端信任客户端证书 keytool -importcert -alias jmx-client -file client.crt -keystore server-truststore.jks # 客户端信任服务端证书 keytool -importcert -alias jmx-server -file server.crt -keystore client-truststore.jks对应的JVM参数加在服务端-Djavax.net.ssl.keyStore/opt/monitor/server.jks -Djavax.net.ssl.keyStorePasswordchangeit -Djavax.net.ssl.trustStore/opt/monitor/server-truststore.jks -Djavax.net.ssl.trustStorePasswordchangeit -Dcom.sun.management.jmxremote.ssl.need.client.authtrue加need.client.authtrue是启用双向认证意味着只有持有可信证书的客户端才能连进来。这一步做完之后即使账号密码泄露没有客户端证书也建立不了连接。3.5 网络层收口防火墙与白名单即使前面所有配置都正确也不要让JMX端口在网络上随意可达。正确姿势是收口到最小范围。如果应用在机房在防火墙上对9010端口做来源限制只放行监控服务器的IP段iptables -A INPUT -p tcp --dport 9010 -s 10.20.0.0/16 -j ACCEPT iptables -A INPUT -p tcp --dport 9010 -j DROP如果是云环境直接在安全组里配置。这里要特别提醒安全组规则里如果写了0.0.0.0/0那等同于没有限制。至少也该写成监控网段的CIDR。另外提前把RMI的动态端口问题在网络层也解决掉。由于com.sun.management.jmxremote.rmi.port已经固定了防火墙只需要对port和rmi.port两个端口做放行不用开放大段随机端口。4. 长期演进从JMX裸奔走向安全可观测4.1 用HTTP指标暴露替代RMI链路如果你的团队正在搭建可观测体系我建议你把“对外暴露JMX RMI”这个方案直接淘汰掉。现在主流的监控架构里采集端一般基于HTTP协议拉取指标数据而不是直接连JMX端口。具体做法是在Java应用进程里加载一个基于HTTP的指标暴露组件由它在本地把JMX数据转化为指标格式再通过HTTP端口输出。这个HTTP采样端口绑定在127.0.0.1外部采集器无法直接访问再由一台专用的采集网关或边车进程去拉取并上报监控平台。这套方案的好处非常明显第一JMX RMI不再对外监听几乎消除了未授权访问的暴露面第二HTTP协议相比RMI更容易在网络层做鉴权和控制第三采集格式统一后续接入时序数据库、告警引擎都方便得多。4.2 容器与云场景下的JMX风险控制容器化普及之后JMX的问题变得更隐蔽了。原因在于很多基础镜像为了便于调优默认开启了JMX但容器端口映射的时候又把9010直接映射到了宿主机上。这相当于你在租来的房子里装了个监控摄像头却把直播权限开放给了整栋楼。在容器环境里我建议遵循两层规则第二容器内JMX只绑定在本地回环地址不要通过host网络模式暴露。如果监控系统需要访问就让监控边车与业务容器共享网络命名空间从容器内部去连。第二端口映射时严格区分“必要端口”和“管理端口”。业务流量走ingress或serviceJMX属于管理面不要直接进入业务端口映射表。一个比较稳妥的启动参数组合是这样的-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port9090 -Dcom.sun.management.jmxremote.rmi.port9090 -Dcom.sun.management.jmxremote.local.onlytrue -Dcom.sun.management.jmxremote.authenticatetrue -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.password.file/etc/jmx/jmxremote.password -Dcom.sun.management.jmxremote.access.file/etc/jmx/jmxremote.access -Djava.rmi.server.hostname127.0.0.1注意这里的hostname也配成127.0.0.1这样RMI内嵌地址就是回环地址外部即使误发了数据包也连不上。在容器里如果需要从宿主机访问建议用kubectl exec进入容器或者经过监控代理转发而不是直接暴露端口。4.3 落地前的自检清单每次给项目做JMX加固我最后都会过一遍这张表。你也完全可以拿它当发布前的检查清单检查项期望结果检查命令或方法9010等JMX端口是否监听在非回环地址只在127.0.0.1或网络层已有白名单ss -tlnp查看监听地址启动参数是否包含authenticatetrue已包含ps aux查看Java命令行密码文件权限是否600是ls -l /opt/monitor/jmxremote.password日志中是否出现Password file authentication enabled已出现grep -i password应用日志是否配置ssltrue已配置检查启动参数RMI端口是否固定com.sun.management.jmxremote.rmi.port与JMX端口一致检查启动参数防火墙或安全组是否有来源IP限制仅允许特定网段查看安全组规则或iptablesremote连接是否已用监控账号验证只有认证通过才能连入jconsole或监控平台测试是否已淘汰RMI暴露改用HTTP指标方案长期目标评估架构演进计划这张表不仅对Java应用有效对基于JVM的其他服务包括各种中间件同样适用。排查时只要把进程名和端口号换掉思路完全一致。我在实际运维里有一个挺深的体会JMX这种问题往往不是技术难度高而是太日常了日常到所有人默认它“能用就行”。等到被安全扫描报告砸到头上才发现生产环境的JMX端口已经全网裸奔了几个月。与其那时候紧急修复不如在每次发布清单里把JMX安全检查作为一个固定项。一次配置到位比事后擦屁股省心得多。

相关新闻

qui:把 3 台 qBittorrent 实例装进一个 WebUI 的实操笔记

qui:把 3 台 qBittorrent 实例装进一个 WebUI 的实操笔记

qui:把 3 台 qBittorrent 实例装进一个 WebUI 的实操笔记 【免费下载链接】qui A fast, single-binary qBittorrent web UI: manage multiple instances, automate torrent workflows, and cross-seed across trackers. 项目地址: https://gitcode.com/GitHub_Tre…

2026/10/17 5:27:25 阅读更多 →
SQL添加数据全攻略:INSERT、批量插入与冲突处理

SQL添加数据全攻略:INSERT、批量插入与冲突处理

前阵子有个小组的后台接口频繁报警,查了半天发现是日志表的数据写入方式太原始——一条一条循环INSERT,压测一上来直接拖垮了数据库连接池。那一刻我又想起刚学SQL时的自己:以为“添加数据”就是写一句INSERT INTO ... VALUES就完事了。实际上…

2026/10/17 5:26:25 阅读更多 →
金融服务落地指南:从账户支付到风控合规的实战拆解

金融服务落地指南:从账户支付到风控合规的实战拆解

这两年“financial services”这个词被反复提起,但真要说清楚它是什么、包含什么、怎么落地,很多人其实是一头雾水的。我在金融科技领域做了多年一线业务和技术落地,见过不少从传统行业转过来的人,也有不少刚入行的新人&#xff0…

2026/10/17 5:26:25 阅读更多 →

最新新闻

深入浅出Linux网卡驱动:DMA、NAPI与多队列调优

深入浅出Linux网卡驱动:DMA、NAPI与多队列调优

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

2026/10/17 6:04:33 阅读更多 →
glibc2.27堆题沙箱绕过:tcache、ORW和setcontext实战解析

glibc2.27堆题沙箱绕过:tcache、ORW和setcontext实战解析

从glibc 2.27开始,堆题的常规打法变得很机械:tcache几乎没有限制,double free和poisoning基本是“一键操作”。可一旦题目在堆漏洞外面又套了一层seccomp沙箱,整条利用链就得重新想。你辛辛苦苦把__free_hook改成了system&#xf…

2026/10/17 6:04:33 阅读更多 →
基于MP2642GR-Z与TM4C129EKCPDT的电池主动均衡方案设计与实现

基于MP2642GR-Z与TM4C129EKCPDT的电池主动均衡方案设计与实现

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

2026/10/17 6:04:33 阅读更多 →
储能电池均衡方案选型与MP2642GR-Z+STM32实战

储能电池均衡方案选型与MP2642GR-Z+STM32实战

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

2026/10/17 6:04:33 阅读更多 →
Matlab插值算法手写实验全解析:Lagrange、Newton与三次样条

Matlab插值算法手写实验全解析:Lagrange、Newton与三次样条

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

2026/10/17 6:04:33 阅读更多 →
三角分解法与高斯迭代法:线性方程组求解的工程实现与排错指南

三角分解法与高斯迭代法:线性方程组求解的工程实现与排错指南

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

2026/10/17 6:03:33 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →