Linux服务器安全加固实战:SSH、防火墙与内核参数基线配置

刚接手一台别人维护过的Linux服务器时,我一般不会急着部署业务,也不会先冲上去装各种安全软件。第一件事永远是做一遍系统安全基线梳理:看看哪些端口开着、哪些用户能登录、哪些服务在监听、关键文件权限是否合适。这个习惯保持了很长时间,帮我在不少项目里提前避开了麻烦。所谓“系统安全加固”,说穿了就是把一台默认配置的机器,一点点收成符合业务需要的最小开放形态,让不该出现的东西不出现,不该打开的通道都关掉。

这篇文章我打算以Linux环境为场景完整展开,覆盖账户体系、SSH登录入口、防火墙收敛、文件系统权限、内核参数以及常用安全工具的配置。里面所有操作步骤、配置参数、排查思路,都是我在真实环境里验证过的,也会把我踩过的坑一并写出来。适合正在做服务器基线加固、准备上生产环境、或者刚接手老旧系统的运维和开发同学参考。

1. 加固思路:先把“为什么”想清楚

1.1 加固不是装软件,是收敛暴露面

很多人一说安全加固,第一反应是装个杀毒软件、装个安全狗、装个检测Agent。这其实把顺序搞反了。安全的核心思路是暴露面收敛,如果一个服务根本不在监听、一个端口根本不对公网开放,那攻击者连接触的机会都没有,比任何检测工具都有效。

Linux默认安装以后,系统会打开很多用不到的端口和服务。比如有些发行版默认开着CUPS打印服务、Avahi广播、Telnet等旧协议,这些平时业务根本用不上,却是攻击者最爱扫描的入口。加固的第一步不是一个一个去堵漏洞,而是先盘清楚“这台机器上到底跑着什么”,然后把你不需要的东西全部停掉。

我通常会在拿到一台机器后,先跑一遍端口和服务盘点,再结合业务确认最小集合。这个环节花不了多少时间,但整个加固方案的依据都在这里,跳过这一步后面很容易做出“看起来很安全实则稀烂”的配置。

1.2 最小权限原则怎么落到每一条命令上

最小权限不是一个悬在空中的概念,它最后会落到账户、文件权限、sudo授权、防火墙策略这些非常具体的对象上。比如一个应用账户,它只需要读取自己的配置文件和日志,那就不该有/home下其他用户的读权限;只允许通过特定IP访问SSH,那防火墙策略就该精确到IP而不是“全部允许”。

落到实操里,我一般会坚持几条很朴素的规则:

  • 能用普通用户跑的进程,绝不用root跑。像Nginx的master process可以绑定80端口后降权,Web应用的服务账户单独建,数据目录所有权独立隔离。
  • sudo授权精确到命令,不直接给ALL。比如某个维护账号只需要重启某个服务,那sudoers里就只写那一条命令。
  • 文件权限能收则收,目录默认755、文件默认644是在没有特殊需求的前提下,特殊目录根据实际需要单独处理。

这些动作单独看都很小,但组合起来会让攻击者即使拿到一个低权限shell,横向移动成本也高很多。

1.3 纵深防御:即使一层被突破,也要有兜底

我的加固方案从来不是单点防御。比如SSH改成了密钥登录,这只是防住了口令爆破,如果本机账户密码被撞库,攻击者还能绕过密钥直接凭密码登录吗?所以还要配合禁用密码登录、限制登录用户、fail2ban、防火墙只放行指定来源,形成链条。

纵深防御在Linux环境里的表现就是:网络层有防火墙收敛端口,应用层有服务降权,系统层有文件权限基线,登录层有密钥认证和来源限制,最后还有审计日志记录所有敏感操作。每一层不追求绝对安全,但即使某一层失灵了,下一层还能兜底。

提示:做加固最忌讳“毕其功于一役”的心态,任何单一配置都不能保证安全。参考上面这个思路,逐层检查、逐层加固,会发现系统安全性提升的不是一点半点。

2. SSH与账户体系:登录入口是第一道门

2.1 禁用root直接登录,先改成密钥认证

Linux服务器的登录入口是最容易被打爆的地方,尤其是SSH端口暴露在公网的情况下,密码爆破几乎是24小时不间断的。默认情况下root可以直接登录,而且很多初始化场景还开着密码认证,这等于把最高权限账户暴露在暴力破解的射程内。

改法也不复杂,先创建普通用户并加入sudo组,然后把自己本地的公钥拷过去,确认能通过普通用户登录后,再去修改SSH配置。

# 创建普通用户,加入sudo组 useradd -m -s /bin/bash ops passwd ops usermod -aG sudo ops # 把本机公钥放到目标机器的用户目录 ssh-copy-id ops@server_ip

接下来修改SSH服务端配置,这一步建议先开一个新终端保持一个已有连接,避免改错了把自己锁在外面:

sudo vim /etc/ssh/sshd_config

重点改这几个参数,改完重启sshd服务:

# 禁用root直接登录 PermitRootLogin no # 关闭密码认证,只允许密钥 PasswordAuthentication no # 限制能登录的用户,白名单模式 AllowUsers ops # 空密码账户禁止登录,默认就是no,保持住 PermitEmptyPasswords no

实测下来的效果很明显:关闭密码认证后,SSH端口上的暴力破解日志数量会断崖式下降,因为攻击者拿到你的公钥文件几乎没有可能,剩下的扫描再频繁也只是空转。

2.2 清理无效账户和组,关掉不必要的登录Shell

系统安装后默认会有很多系统账户,这些账户本身没有登录Shell,危害不大,但如果某个账户被改成可登录Shell,又刚好是弱口令,就成了一个后门。所以我做加固时会统一盘一遍账户列表。

# 列出所有可登录账户 awk -F: '($7 != "/usr/sbin/nologin" && $7 != "/bin/false") {print $1, $7}' /etc/passwd

正常环境里,可登录账户应该只有root、自己创建的运维账户、业务应用账户(如果有需要)。其余的一律改成nologin或者/bin/false,让它们无法交互登录:

usermod -s /usr/sbin/nologin 用户名

还要检查一下空密码账户和UID为0的账户。UID为0意味着管理员权限,如果非root账户出现UID为0,基本可以判定是有问题的,需要立刻处理:

# 检查空密码账户 awk -F: '($2 == "") {print $1}' /etc/shadow # 检查UID为0的账户 awk -F: '($3 == 0) {print $1}' /etc/passwd

用户组也值得花两分钟过一遍,重点看sudo组和wheel组里有没有不该出现的成员,以及是否存在遗留的旧员工账户。我见过不少项目,人员都换了好几轮了,服务器上还留着离职同事的账户,一旦口令泄露就是个入口。

2.3 登录保护:失败限制与二次验证

即使启用了密钥认证,SSH也建议做一层登录保护。因为总有些场景需要开着密码登录,比如部分堡垒机对接、安全合规要求。这种情况下,可以用fail2ban对多次认证失败的来源IP做临时封禁。

我一般在/etc/fail2ban/jail.local里这样配置:

[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600

maxretry 3表示同一个来源IP尝试3次失败就封禁,bantime 3600表示封1小时。参数可以根据线上误判情况调整,但不要设成太宽松,否则失去了拦截意义。我习惯把findtime也配上,表示多长时间窗口内累计次数:

findtime = 600

这表示10分钟内失败3次就触发封禁,比单纯累计次数合理一些。

如果对安全性要求更高,还可以考虑给SSH加上二次验证,比如配置TOTP动态口令。不过这个方案涉及客户端也要装验证器,团队规模大时推行成本不低。我一般的建议是:先用密钥加fail2ban把绝大部分爆破挡掉,二次验证作为可选增强项,在核心跳板机、数据库运维机上优先启用。

3. 网络层收敛:防火墙不是装饰品

3.1 默认拒绝策略,先把大原则定下来

很多服务器自带防火墙,但默认策略基本上是“放行所有流量”,等于没装。我理解的防火墙策略只有一条硬原则:默认拒绝,显式放行。所有流量先禁止,然后根据业务需求一条一条加白名单。

以iptables为例,先把默认策略全部改成DROP:

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT

这样配置完以后,这台机器基本与外界隔绝了,然后我们再自己执行“开放”。这种方式的好处是,你每放行一个端口都经过思考,不会有“反正开着就先留着”的侥幸。

不过现在很多Linux发行版也推荐用nftables或者ufw作为前端,底层逻辑是一样的。比如用ufw做默认拒绝就简洁一些:

ufw default deny incoming ufw default allow outgoing ufw allow 22/tcp ufw allow 80/tcp ufw enable

这里22端口是SSH、80端口是Web应用,其他端口继续保持关闭状态。

注意:改防火墙策略前,一定先确认自己有一条能连接到服务器的通道,比如通过带外管理口或者控制台。网络层配置失误导致“远程把自己锁死”的案例,我身边发生过太多次了。

3.2 最小端口清单:一眼能看懂这台机器在干嘛

整理防火墙策略时,我会顺手做一张端口清单表,写清楚端口号、协议、服务名、放行来源、用途。这个表格既是加固文档的一部分,也是未来排查问题的依据。

端口协议服务放行来源说明
22TCPsshd办公网出口IP远程登录入口
80TCPnginx所有HTTP入口
443TCPnginx所有HTTPS入口
3306TCPmysqld内网应用服务器网段数据库访问

凡是表格里没有的端口,防火墙默认就是拒绝。有了这张表,后续任何异常端口开放都容易发现。

另外还要注意几个细节:

  • 不要用iptables默认的allow all from anywhere这种粗放规则,来源尽量收敛到IP段或具体IP。
  • 管理类端口(SSH、数据库、监控面板)不要暴露在公网,要么走内网,要么走堡垒机。
  • 某些服务如果只有内网访问需求,监听地址直接绑到内网IP,而不是0.0.0.0。

我会在配置服务时顺手把监听地址一起改了,比如MySQL只监听内网IP:

bind-address = 192.168.x.x

这比单独依赖防火墙又多了一层保护,属于典型的纵深防御思路。

3.3 防火墙规则的常见坑:顺序与持久化

防火墙规则里有个容易被忽视的问题:规则顺序。比如先插入了一条DROP ALL,又追加了一条ALLOW 22,那22端口依然被前面那条DROP挡掉了。iptables是顺序匹配的,所以规则顺序错了,结果完全相反。

所以更稳妥的方式是先落默认策略再写放行规则,或者用像ufw这样的前端工具来管理,它内部会处理好顺序。如果是纯iptables环境,我建议把配置写成脚本文件,而不是在命令行一条条敲,这样既能保证顺序可控,也能后续维护复用。

持久化是另一个高频坑。命令行配置的iptables规则,重启后会全部丢失。我一般用iptables-save导出规则文件,再配置开机自动恢复:

iptables-save > /etc/iptables/rules.v4

这样至少在系统重启后,规则不会悄然消失。

4. 文件系统、内核参数与存储保护

4.1 权限基线:关键目录与SUID排查

Linux文件权限的默认值通常不会太离谱,但时间一长,各种手工操作会把权限搅乱。比如有人图省事chmod -R 777,又或者把web目录直接设成nobody用户可写,一旦Web层面有漏洞,攻击者就能直接写马。

我建议做一次全盘权限基线检查,重点关注这几个点:

  • /etc/shadow必须只有root可读,其他账户不可读不可写。
  • 所有SUID文件都要过一遍。SUID位意味着任何用户执行这个文件时,都以文件属主身份运行,一旦有可利用的漏洞,很容易提权。

排查SUID文件可以用一条命令:

find / -perm -4000 -type f 2>/dev/null

正常的SUID文件集中在/usr/bin、/usr/lib等系统目录里,一般是passwd、sudo、mount这类程序。如果某个奇怪目录下出现SUID文件,比如/tmp、/var/tmp、/home下,高度怀疑是入侵痕迹,立即删除或进一步排查。

对于web目录,我习惯的基线是:代码文件属主是应用账户,目录权限755、文件权限644,只有需要写入的upload、cache目录放开写权限,并且要将传入的文件与可执行权限彻底隔离。这样即使攻击者上传了脚本,也因为没有执行权限而无法运行。

4.2 内核参数:几个值得开启的加固项

内核参数层面的加固,不需要做太多,重点调整几个和安全强相关的选项就行。配置文件在/etc/sysctl.conf或/etc/sysctl.d/下,调整后执行sysctl -p生效。

比较值得关注的几个参数:

# 禁止响应ICMP重定向,防止中间人通过重定向改路由 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 # 开启IP转发(如果需要做转发,则设1,否则建议设为0) net.ipv4.ip_forward = 0 # 开启TCP SYN Cookie,缓解SYN Flood攻击 net.ipv4.tcp_syncookies = 1 # 关闭源路由,防止基于源路由的绕过 net.ipv6.conf.all.accept_source_route = 0

这些参数单独看都没什么“大招”感,但它们把一些不太被注意的网络层攻击路径封死了。尤其是将tcp_syncookies和accept_redirects处理好之后,短期内就能明显感觉扫描利用的成功率下降。

另外还有一个我踩过坑的细节:修改sysctl前先确认参数在当前内核里存在,有些老内核版本不支持个别参数,直接写进去会导致sysctl -p报错,有时候还会影响启动流程。

4.3 数据加密:磁盘层与文件层

系统加固很容易只盯着“不让别人进来”,却忽视了“数据被偷走之后还能不能用”这一层。磁盘加密的作用就在这里,尤其对于笔记本、移动工作站、带敏感数据的物理机,全盘加密能保证硬盘被人拔走也读不出有效内容。

Linux下常用LUKS做磁盘加密。创建加密分区的过程倒不复杂,但需要注意几点:

  • 加密后一定要备份LUKS头部信息,否则一旦头部损坏,数据基本无法恢复。
  • 开机密码要设成强密码,但也要保证在紧急情况下能找到解密途径,建议把恢复密钥放到加密分区之外的安全位置。
  • 对已经运行很久、数据量很大的服务器做全盘加密迁移难度不小,需要停机、数据迁移、恢复验证,生产环境谨慎评估。

如果做不了全盘加密,至少要对敏感文件做加密存储,比如用gpg加密备份数据库、用openssl加密配置文件。我见过很多备份明文躺在备份服务器上,主服务器安全做得很好,备份数据反倒成了突破口。

5. 安全工具:装上不等于安全

5.1 自动安全更新,怎么配更稳

Linux发行版都有自动更新机制,比如Debian/Ubuntu下有unattended-upgrades,RHEL系有dnf-automatic。自动更新这个事,既要开又怕开:不开的话漏洞补丁打不上,全开的话又可能碰上更新导致服务重启、驱动不兼容。

我的做法是折中策略:安全更新自动装,非安全更新手动评估。在/etc/apt/apt.conf.d/50unattended-upgrades里,把安全更新源打开:

Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };

同时设置自动重启策略,把需要重启的内核更新也纳入管理,但指定重启时间段,避免深夜跑着任务被重启打断:

Unattended-Upgrade::Automatic-Reboot "true"; Unattended-Upgrade::Automatic-Reboot-Time "03:00";

这里有一点要提醒:自动更新只是一个兜底,关键应用的版本升级和兼容性验证仍要靠人工流程。别把自动更新当成“什么都不管”的理由,尤其线上有自编译模块、内核模块、第三方源的情况,自动更新经常引发兼容性问题。

5.2 fail2ban的实际配置经验

前面提到过fail2ban在SSH上的基础用法,其实它的能力远不止拦截SSH爆破。Nginx、Apache、Postfix、vsftpd这些服务都有现成的filter,配置好了也能防目录扫描和密码爆破。

我常用的是给Nginx加一条防目录扫描的规则,效果不错。写一个filter文件:

[Definition] failregex = ^<HOST> .* "(GET|POST|HEAD) .* (\.php|\.env|\.git).*" (403|404) ignoreregex =

然后在jail配置里启用:

[nginx-scan] enabled = true port = http,https filter = nginx-scan logpath = /var/log/nginx/access.log maxretry = 5 findtime = 300 bantime = 1800

这样配置之后,短时间连续命中敏感路径的IP会被自动封禁半小时。实际部署后,日志里那些扫描.env、.git目录的请求明显消停了。需要注意filter的正则写好后一定要用fail2ban-regex测试,否则规则不生效,fail2ban会在日志里静默跳过。

5.3 审计日志与监控告警

日志和审计是最后一道兜底,平时不起眼,出事后才知道重要。我建议至少完成三件事:

第一,打开系统审计服务auditd,配置对关键文件的改动监控。比如监控/etc/passwd、/etc/shadow、/etc/ssh/sshd_config的写操作,一旦被改动,立刻记入审计日志。

auditctl -w /etc/passwd -p wa -k passwd-changes auditctl -w /etc/ssh/sshd_config -p wa -k sshd-config

第二,把系统日志做一下集中转发,至少保证日志不被本地轻易篡改。最简单的方式是配置远程syslog,把auth.log、syslog等核心日志发到独立的日志服务器上。

第三,设一个简单的告警,定期扫描auth.log中的异常登录现象。我一般写个小脚本配合cron,每天检查认证日志里是否有陌生IP登录成功,有就发通知。这个脚本不用很复杂,但要保证它一直在跑。

5.4 主机完整性校验:校验文件,而不是猜测

文件完整性校验工具能够给关键文件建立初始哈希库,之后定期比对,一旦有文件被篡改就会报警。常见选择是AIDE这类工具。

AIDE的配置思路比较直接:初始化数据库后,定期检查。初始化动作:

aideinit mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

然后定时执行:

aide --check

实际使用中要注意两点:一是初始化数据库必须在系统刚装好、确认没有被入侵的状态下做,否则保留的是“脏状态”;二是系统升级、改配置文件后,需要重新更新数据库,否则会持续误报。

我的做法是把AIDE检查和配置发布的流程绑定在一起,每次有合法变更后就手动更新一次数据库,同时保留历史数据库,方便回溯。

6. 常见问题与排查技巧实录

6.1 改完SSH配置连不上了

这是最高频的事故,我早期也翻过车。改sshd_config时把PasswordAuthentication no一开,然后直接在当前会话里重启了sshd,但密钥认证那边又出了点小问题,结果一断开就再也连不回去,最后只能跑机房。

后来我总结了一套不容易出事的流程:

  • 改SSH配置前,先另开一个终端窗口,保持一个长连接不要关。
  • 用sshd -t检查配置语法,确保没有语法错误再重启。
  • 重启服务不选restart,用reload,这样可以保留现有连接不断开。
  • 如果用的是systemctl restart sshd这类命令,也先确认另一个终端连接还在,万一有问题还能原地改回来。

如果已经锁在外面,且无法通过带外管理卡操作,那就比较被动了。所以这个流程不是建议,是强需求,务必遵守。

6.2 防火墙把自己关在门外

防火墙规则的调整同样容易出事故,尤其是搞不清当前规则顺序的时候。我遇到过一次,给数据库端口加新规则,顺手把原来的放行规则覆盖了,结果所有应用连接数据库全部超时,业务直接不可用。

排查思路其实比较直接,先看规则列表,再逐条确认:

iptables -L -n --line-numbers

如果是临时加规则,建议用-I把放行规则插在DROP规则前面;删除规则时一定要先确认删除的是哪一条,别按“看起来像”的那条删。

更稳妥的办法是先把规则导出一份备份,再改配置,改完原样导出一份新规则做对比。改完后立即用新的SSH连接、服务请求测试一遍,别等到隔天线上出问题再去追。

6.3 自动更新导致服务起不来

自动更新本身是好意,但第三方源和自编译组件很容易因为依赖升级而出现“起不来的服务”。最典型的是升级了底层动态库版本,Web服务开始报错;或者内核更新后,内核模块不匹配,整个系统根本进不去图形界面或者网络起不来。

我的处理策略是这样:

  • 第三方软件源尽量少用,只保留发行版官方源和确需的厂商源。
  • 自编译的服务,建议把二进制和相关依赖放在独立目录,比如/opt/app,减小被系统更新波及的概率。
  • 更新前看一遍更新列表,遇到内核、libc这类大组件,先确认有没有第三方依赖它们。

真出问题时,先看journalctl -u 服务名的报错日志,多数情况下能找到缺失的库文件或版本不匹配的线索。如果服务被更新覆盖了配置,备份目录里翻一下旧配置,改回去并且暂时锁住对应软件包的版本。

6.4 误报与性能开销

安全工具装多了,误报和性能开销不可避免。比如fail2ban的规则写太严,会把正常用户扫个文件就封掉;AIDE在文件多的目录上做全量比对,会产生明显的CPU和IO开销。

我的建议是分级处理:核心资产和敏感目录做高频率监控和严格策略,普通业务目录放宽阈值。像是几百G的文件目录,AIDE没必要全量监控,挑出配置文件和关键二进制目录就够了。fail2ban的封禁时间也不宜太长,配合人工复核比一刀切更符合实际情况。

另外,很多安全工具的日志量非常大,尤其是审计服务全开时,一天能产生几个GB的日志。需要提前规划磁盘空间或者日志轮转策略,避免日志反过来把系统盘塞满。

7. 我的实际体验与最后几句建议

这些年做过的加固项目里,我最大的体会是:Linux系统安全加固并不是什么高深莫测的事,它更像是一个整理房间的过程,把不需要的东西丢掉,把重要的东西锁好,把窗户和门的位置搞清楚。只要思路清晰、步骤明确,一台默认状态的Linux服务器可以在很短的时间内收敛到一个比较安全的基线之上。

有几个经验想单独拿出来再强调一次。第一,所有改动必须可回退。改SSH、防火墙之前,先把旧配置备份好,确认自己的逃生通道还存在,这比任何华丽的安全策略都重要。第二,加固文档至少要包含端口清单、账户清单、关键配置基线这三张表,否则过三个月后没人能说清这台机器到底开了什么。第三,监控和安全工具不是越多越好,报警量和误报率需要平衡,否则告警风暴会导致真正重要的问题被淹没。

如果你正在做Linux环境的安全加固,建议从最简单的三步开始:关掉不需要的端口、禁用root密码登录、清理可登录账户。这三步做完,这台机器的基本安全性已经超过绝大多数默认安装的服务器了。然后在此基础上逐步完善审计、监控、文件完整性校验这些成本更高的环节。安全是个持续迭代的过程,不是某个时间点一劳永逸的事,保持定期的基线复查习惯,比偶尔一次大扫除更有价值。

相关新闻

Java Swing实现扫雷游戏:核心算法与界面交互全解析

Java Swing实现扫雷游戏:核心算法与界面交互全解析

扫雷这个游戏&#xff0c;估计没人没玩过。但用Java Swing亲手实现一个能玩、能赢、手感还顺滑的版本&#xff0c;绝对比点开系统自带扫雷点掉一个下午有价值得多。我前段时间把完整的 javaswing实现扫雷游戏 从零写完&#xff0c;从二维数组建模、布雷算法、递归展开&#xff…

2026/10/21 3:13:10 阅读更多 →
待cursor解释:用AI把陌生代码变成可验证注释

待cursor解释:用AI把陌生代码变成可验证注释

在代码里写注释时&#xff0c;我经常留一句“待cursor解释”。这句话听起来有点偷懒&#xff0c;甚至像在甩锅——把自己看不懂的逻辑丢给AI去折腾。但真正用下来我才发现&#xff0c;这个简短的标记&#xff0c;改变的其实是我处理陌生代码的整个流程。Cursor这类AI编辑器出现…

2026/10/21 3:12:10 阅读更多 →
车道级地图映射(Lane Mapping):自动驾驶从感知到高精地图的关键桥梁

车道级地图映射(Lane Mapping):自动驾驶从感知到高精地图的关键桥梁

我第一次看到“Channel映射&#xff08;Lane Mapping&#xff09;”这个技术名词时&#xff0c;第一反应是通信协议里的信道映射&#xff0c;心想这不该是芯片工程师的活吗。直到自己在自动驾驶项目里啃完一轮车道级地图构建&#xff0c;才明白这里的Channel并不是通信信道&…

2026/10/21 3:12:10 阅读更多 →

最新新闻

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg 这个工具&#xff0c;刚接触音视频开发的人往往会被它庞大的参数体系劝退&#xff0c;但真正用起来之后又会发现&#xff0c;很多看似复杂的需求&#xff0c;其实一条命令就能搞定。这次要聊的是 FFmpeg 读取本地文件和网络流这两种输入源的处理方式&#xff0c;属于系列…

2026/10/21 3:53:34 阅读更多 →
用CC-Switch统一管理Claude Code与Codex的API配置

用CC-Switch统一管理Claude Code与Codex的API配置

每天在终端里同时用几个 AI 编程工具的人&#xff0c;大多经历过这种状态&#xff1a;Claude Code 要一套 API 配置&#xff0c;Codex 又是另一套&#xff0c;换一下模型提供商或者接入渠道就得重新改环境变量。最难受的不是改本身&#xff0c;而是改完经常不生效&#xff0c;最…

2026/10/21 3:53:34 阅读更多 →
程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

1. 从一条比赛公告里拆出来的真实需求第一次看到这个标题的时候&#xff0c;我正蹲在工位上啃便利店饭团&#xff0c;脑子里第一反应不是"哇有免费汉堡"&#xff0c;而是——"程序员创意开发大赛"这七个字背后&#xff0c;到底想让人做出什么东西来。标题里…

2026/10/21 3:53:34 阅读更多 →
C++归并排序优化实战:从教科书到生产级性能提升一倍

C++归并排序优化实战:从教科书到生产级性能提升一倍

1. 归并排序优化版的核心设计思路归并排序这个算法&#xff0c;计算机专业的人都不陌生。教科书上讲分治法&#xff0c;十有八九拿它当例子。但真正在项目里手写过生产级别的归并排序之后&#xff0c;你会发现课本上那个版本离“能用”还有相当一段距离。我最近在一个数据处理模…

2026/10/21 3:53:34 阅读更多 →
11万star开源工具实测:软件拆解与结构分析全流程指南

11万star开源工具实测:软件拆解与结构分析全流程指南

1. 这个11万star的项目到底在拆什么第一次看到这个项目的star数时&#xff0c;我下意识地刷新了两遍页面。11万star&#xff0c;在开源社区里这个量级意味着它已经不只是"热门工具"&#xff0c;而是某种程度上的基础设施了。但真正让我决定花一个周末把它跑通的&…

2026/10/21 3:53:34 阅读更多 →
单图生成3D高斯泼溅实战:API接入与交互展示

单图生成3D高斯泼溅实战:API接入与交互展示

1. 从一张图到可交互3D&#xff1a;这个项目到底在做什么单图生成3D高斯泼溅&#xff08;3D Gaussian Splatting&#xff0c;后面统一简称3DGS&#xff09;这个方向&#xff0c;最近半年热度一直没降下来。原因很直接&#xff1a;传统摄影测量或者多视角重建&#xff0c;你得围…

2026/10/21 3:52:33 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →