SSH连接报kex_exchange_identification的4步根因定位法

news2026/5/24 5:05:35
1. 这个报错不是SSH客户端的问题而是服务器在“拒之门外”“kex_exchange_identification”——这串字符第一次出现在终端里时我正帮一位刚转行做运维的同事排查一台新部署的Ubuntu云服务器。他反复执行ssh userip每次都在输入密码前卡住三秒然后弹出一行红字kex_exchange_identification: read: Connection reset by peer。他以为是自己输错了IP或密钥路径重装OpenSSH、换客户端、甚至重开VPS都试过问题依旧。直到我让他在本地加一个-v参数跑一次ssh -v userip才在第7行看到真正关键的日志debug1: kex_exchange_identification: read: Connection reset by peer。这个报错名字很唬人带“kex”Key Exchange、“identification”听起来像加密协商失败。但真相恰恰相反它根本不是密钥交换阶段出的问题而是SSH服务端在完成TCP三次握手后、尚未进入任何协议交互之前就主动关闭了连接。换句话说客户端连“你好”都没来得及说出口服务器已经把门关上了。它不属于SSH协议栈的认证层、加密层或传输层错误而是一个更底层的“准入拦截”信号。为什么小白特别容易被它困住因为所有常规排错路径都指向“客户端配置错误”密钥格式不对、known_hosts冲突、客户端版本太老……但kex_exchange_identification的根因90%以上发生在服务端——要么sshd进程压根没起来要么防火墙/安全组在TCP层面就截断了连接要么系统级限制如tcp_wrappers、fail2ban、PAM模块在SSH协议启动前就拒绝了请求。它就像小区门禁系统在你掏出业主卡之前保安已经根据访客登记表把你拦在了大门口。这篇文章专为遇到这个报错的小白设计不讲抽象协议理论只聚焦你能立刻验证、立刻修复的4个真实场景。你会看到如何用一条命令区分是网络层中断还是服务层拒绝为什么systemctl status sshd显示active却依然报错防火墙规则里哪一行看似合理实则致命以及一个被绝大多数教程忽略的、Linux内核级的连接数限制陷阱。所有操作步骤我都附上了预期输出和错误对照表你不需要理解原理也能照着做对。2. 根因定位四步法从网络连通性到sshd进程状态遇到kex_exchange_identification必须放弃“先改客户端配置”的惯性思维。正确的排查顺序是网络可达性 → 端口监听状态 → 服务进程健康度 → 系统级准入控制。这四步环环相扣跳过任何一步都可能浪费数小时。2.1 第一步用telnet或nc确认TCP连接是否能建立这是最关键的分水岭。如果连TCP连接都无法建立后续所有SSH协议层的排查都是徒劳。在你的本地机器Windows可用PowerShellmacOS/Linux用终端执行telnet your-server-ip 22或者更通用的netcat命令推荐因为telnet在某些系统默认未安装nc -zv your-server-ip 22提示nc -zv中的-z表示只扫描端口不发送数据-v表示详细输出。这是最轻量级的TCP连通性测试。预期结果与诊断逻辑输出现象含义下一步动作Connected to your-server-ip或succeeded!TCP连接成功建立说明网络层和防火墙放行了22端口。问题一定出在sshd服务本身或其前置拦截机制上。直接跳到2.3节检查sshd进程Connection refused服务器明确拒绝连接。常见原因sshd服务未运行、监听地址配置错误如只监听127.0.0.1、端口被其他程序占用。执行2.2节端口监听检查Connection timed out或No route to host网络层不通。可能是云服务商安全组未开放22端口、本地网络策略拦截、服务器已关机、IP地址错误。检查云控制台安全组规则确认服务器在线状态我见过太多案例用户在阿里云ECS控制台看到实例“运行中”却忘了安全组默认只放行80/443端口22端口处于关闭状态。此时telnet必然超时但新手常误以为是服务器故障反复重启实例。记住telnet/nc的输出就是你的第一道诊断金标准绝不跳过。2.2 第二步登录服务器检查22端口是否真正在监听如果telnet显示Connection refused说明问题在服务端。你需要登录服务器通过VNC控制台、云厂商Web Shell或另一台可连通的跳板机执行以下命令sudo ss -tlnp | grep :22或者兼容性更好的netstat部分新系统需安装net-toolssudo netstat -tlnp | grep :22注意-t表示TCP-l表示监听状态-n表示数字端口不解析服务名-p表示显示进程PID需要sudo权限。grep :22精准过滤22端口。关键看三列输出Local Address:Port应为*:22监听所有网卡或0.0.0.0:22。如果显示127.0.0.1:22说明sshd只监听本地回环外部无法访问。PID/Program name应显示sshd进程。如果为空说明sshd未运行或未监听22端口。State应为LISTEN。常见异常及修复异常1无任何输出表示sshd进程完全未启动。执行sudo systemctl start sshd sudo systemctl enable sshd # 设置开机自启异常2显示127.0.0.1:22检查sshd配置文件/etc/ssh/sshd_config找到ListenAddress行。如果它被设置为ListenAddress 127.0.0.1请注释掉这行前面加#或改为ListenAddress 0.0.0.0然后重启服务sudo systemctl restart sshd异常3显示其他进程占用22端口如nginx或python这是严重配置错误。执行sudo lsof -i :22确认占用进程停止它并确保sshd独占22端口。2.3 第三步验证sshd服务状态与日志线索即使systemctl status sshd显示active (running)也不能保证它正常工作。sshd可能因配置语法错误而“假启动”——进程存在但拒绝所有连接。执行完整状态检查sudo systemctl status sshd -l --no-pager-l显示完整日志--no-pager避免分页。重点观察最后几行是否有Failed to start OpenSSH server daemon或Configuration error字样。Main PID对应的进程是否存在用ps aux | grep sshd二次确认。更有效的诊断是直接查看sshd实时日志在另一个终端窗口执行保持日志滚动sudo journalctl -u sshd -f然后在本地重新执行ssh userip观察服务端日志的即时反应如果日志完全无任何输出说明连接在到达sshd进程前就被拦截了防火墙、tcp_wrappers、内核参数。如果日志出现Connection closed by authenticating user或Connection reset by peer说明sshd已接收连接但主动关闭需检查/etc/ssh/sshd_config中的MaxStartups、LoginGraceTime等限制参数。如果日志出现fatal: no matching key exchange method found这才是真正的KEX协商失败与本题报错无关此情况会显示具体算法不匹配而非kex_exchange_identification。注意journalctl -u sshd是排查的核心工具。很多小白只看systemctl status却忽略了日志里藏着的致命线索。我曾在一个CentOS 7服务器上发现sshd进程虽在运行但日志里持续报Could not load host key: /etc/ssh/ssh_host_rsa_key——因为密钥文件权限被误设为644。sshd启动时加载失败但进程未退出导致所有连接被静默拒绝。2.4 第四步检查系统级准入控制链当telnet能连上、sshd进程在监听、日志却无任何记录时问题一定在sshd之前的“守门人”身上。Linux系统有三层常见的前置拦截iptables/nftables防火墙最常见。检查规则sudo iptables -L INPUT -n --line-numbers | grep 22 # 或对于nftables较新系统 sudo nft list chain ip filter INPUT关键看是否有REJECT或DROP规则在ACCEPT规则之前匹配了22端口。例如3 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable这条规则会让连接直接被拒绝telnet显示Connection refused。tcp_wrappers/etc/hosts.allow /etc/hosts.deny古老但仍在部分系统启用。检查sudo cat /etc/hosts.allow | grep sshd sudo cat /etc/hosts.deny | grep sshd如果/etc/hosts.deny中有sshd: ALL且/etc/hosts.allow中无对应放行规则则所有SSH连接被拒绝。fail2ban或类似入侵防护工具它会动态修改iptables规则。检查fail2ban状态sudo fail2ban-client status sshd如果Status显示banned IP list非空且你的IP在其中就会被永久拒绝。临时解封sudo fail2ban-client set sshd unbanip your-local-ip这四步构成完整的根因定位链。我建议你把它们做成一个检查清单每次遇到该报错就按顺序执行。实践证明95%的kex_exchange_identification问题都能在这四步内定位到具体原因。3. 配置文件深挖sshd_config里那些“静默拒绝”的开关当telnet能连通、sshd进程在监听、防火墙也放行了22端口但连接仍被重置时问题几乎必然藏在/etc/ssh/sshd_config的某个配置项里。这些配置不会让sshd启动失败却会在连接建立后立即终止会话且多数不写入日志——这就是为什么journalctl看不到记录。3.1 MaxStartups并发连接数的隐形杀手MaxStartups控制未认证连接的最大并发数。默认值通常是10:30:60含义是最多允许10个未认证连接当达到10个时每新增30个连接就随机丢弃1个超过60个则全部丢弃。为什么它会导致kex_exchange_identification当你用ssh -v反复重试或使用支持多路复用的客户端如VS Code Remote-SSH短时间内会创建大量未完成认证的连接。一旦超过MaxStartups阈值sshd会直接reset新连接而不发送任何SSH协议数据包。客户端收到RST包就报出kex_exchange_identification: read: Connection reset by peer。验证方法临时提高限制并测试# 临时修改不重启sshd仅对新连接生效 echo MaxStartups 100 | sudo tee -a /etc/ssh/sshd_config sudo systemctl reload sshd如果问题消失说明就是它。永久修复需编辑/etc/ssh/sshd_config将MaxStartups设为更大值如50:50:100然后sudo systemctl restart sshd。实操心得我在管理一台学生实训服务器时曾将MaxStartups设为5结果20个学生同时点击VS Code的“Connect to Host”按钮瞬间触发拒绝全班报错。后来调到100:30:200才稳定。这个参数的取值没有绝对标准需根据你的并发连接场景压力测试。3.2 LoginGraceTime超时重置的“温柔陷阱”LoginGraceTime定义用户必须在多少秒内完成认证输入密码或加载密钥。默认是120秒。如果在此时间内未完成sshd会关闭连接。陷阱在于当网络延迟高或客户端响应慢时连接可能在LoginGraceTime到期前就因其他原因中断但sshd日志里只会记录Connection closed by authenticating user而客户端看到的仍是kex_exchange_identification。更隐蔽的是某些客户端如旧版PuTTY在等待密码输入时若LoginGraceTime过短会触发重连逻辑造成连接风暴。验证与修复检查当前值sudo grep LoginGraceTime /etc/ssh/sshd_config如果小于60建议设为3005分钟echo LoginGraceTime 300 | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd3.3 PermitRootLogin与AuthenticationMethods认证路径的硬性阻断这两个参数不直接导致连接重置但当配置不当并与客户端行为冲突时会引发静默拒绝。PermitRootLogin no默认禁止root直接登录。如果你用ssh rootipsshd会在认证前就拒绝连接但部分版本日志不明确客户端报错仍是kex类。AuthenticationMethods publickey,keyboard-interactive强制要求两种认证方式都通过。如果客户端只支持公钥就会在第二步认证时失败sshd可能重置连接。诊断技巧临时启用详细日志看sshd如何决策# 在sshd_config末尾添加 LogLevel DEBUG3 # 重启sshd sudo systemctl restart sshd # 然后查看日志 sudo journalctl -u sshd -n 50 -fDEBUG3级别会打印每一步认证决策包括“Authentication method publickey failed”或“User root not allowed because PermitRootLogin is disabled”。3.4 UseDNS与GSSAPIAuthentication反向DNS查询的“时间炸弹”UseDNS yes默认会让sshd对每个连接的客户端IP做反向DNS查询PTR记录。如果DNS服务器响应慢或不可达sshd会卡在DNS查询上最终超时并重置连接。GSSAPIAuthentication yes同理会尝试Kerberos认证增加延迟。为什么这会导致kex报错因为DNS查询发生在SSH协议初始化之后、密钥交换之前。客户端已发送SSH-2.0-OpenSSH_8.9标识但sshd在等待DNS响应时若超时会直接关闭socket客户端读取失败即报kex_exchange_identification。修复方案强烈推荐编辑/etc/ssh/sshd_config添加或修改UseDNS no GSSAPIAuthentication no然后重启sudo systemctl restart sshd。经验教训我在某次跨国项目中服务器位于新加坡DNS配置指向了国内DNS服务器。当美国用户连接时反向DNS查询耗时超过30秒必现kex报错。关闭UseDNS后连接时间从30秒降至0.2秒。4. 内核与系统资源被忽视的终极防线当所有软件层配置都正确telnet能连、sshd在监听、日志也干净问题依然存在时你需要把目光投向操作系统内核。这里有两个常被忽略的硬性限制net.core.somaxconn全连接队列和net.ipv4.tcp_max_syn_backlog半连接队列。它们决定了服务器能同时处理多少个TCP握手请求。4.1 全连接队列溢出sshd的“排队通道”满了Linux内核为每个监听端口维护一个“全连接队列”accept queue存放已完成三次握手、等待应用程序sshd调用accept()取走的连接。队列大小由net.core.somaxconn参数控制默认值在旧系统是128新系统是4096。当队列满时会发生什么内核会直接丢弃新的SYNACK包客户端收不到确认重传几次后超时报错可能是Connection timed out。但更常见的是sshd进程因负载过高或bug未能及时accept()导致队列积压。此时新连接会被内核静默丢弃客户端看到的就是kex_exchange_identification: read: Connection reset by peer——因为连接根本没进到sshd的处理流程。检查与调优查看当前值sysctl net.core.somaxconn如果小于1024建议提高# 临时生效 sudo sysctl -w net.core.somaxconn65535 # 永久生效写入配置文件 echo net.core.somaxconn 65535 | sudo tee -a /etc/sysctl.conf sudo sysctl -p4.2 半连接队列溢出SYN Flood防御的误伤“半连接队列”SYN queue存放收到SYN包、尚未完成三次握手的连接。大小由net.ipv4.tcp_max_syn_backlog控制。当遭受SYN Flood攻击或突发连接时此队列可能溢出内核会丢弃新SYN包。如何判断是它检查内核丢包统计netstat -s | grep -i listen overflows\|SYNs to LISTEN sockets如果listen overflows数值持续增长说明全连接队列溢出如果SYNs to LISTEN sockets后跟dropped则是半连接队列溢出。调优方案# 临时调整 sudo sysctl -w net.ipv4.tcp_max_syn_backlog65535 sudo sysctl -w net.core.netdev_max_backlog5000 # 永久生效 echo net.ipv4.tcp_max_syn_backlog 65535 | sudo tee -a /etc/sysctl.conf echo net.core.netdev_max_backlog 5000 | sudo tee -a /etc/sysctl.conf sudo sysctl -p4.3 PAM模块的静默拒绝/etc/pam.d/sshd里的“黑匣子”PAMPluggable Authentication Modules是Linux认证的底层框架。/etc/pam.d/sshd文件定义了SSH登录时调用的PAM模块链。某些模块如pam_access.so、pam_time.so、pam_faildelay.so配置错误时会在认证前就拒绝连接且不记录详细日志。典型问题/etc/security/access.conf中配置了- : ALL : ALL禁止所有用户。pam_time.so模块因时间规则不匹配而拒绝。诊断方法临时注释掉/etc/pam.d/sshd中所有非必要行只保留基础认证模块# 备份原文件 sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak # 编辑注释掉所有以account、session开头的行除必要外只留auth行 sudo nano /etc/pam.d/sshd然后重启sshd测试。如果问题消失再逐行恢复PAM配置定位具体模块。个人经验有一次客户服务器突然所有SSH连接失败排查三天无果。最后发现是pam_access.so模块被误配规则文件/etc/security/access.conf里有一行- : ALL EXCEPT root : ALL但root用户被禁用了。这个配置让所有非root用户在PAM account阶段就被拒绝sshd日志里只有模糊的Failed password for invalid user而客户端报错正是kex_exchange_identification。这种问题必须靠PAM调试日志才能定位开启方法是在/etc/pam.d/sshd中添加auth [defaultignore] pam_exec.so debug /bin/true然后查看/var/log/secure中的PAM调试输出。5. 实战避坑指南那些让我熬夜到凌晨的细节纸上得来终觉浅。我把过去五年踩过的、文档里几乎不提的12个kex_exchange_identification相关坑浓缩成这份实战避坑指南。每一个都附带真实场景、错误表现和一招制敌的解决方案。5.1 坑1云服务器的“弹性公网IP”绑定延迟场景在阿里云/腾讯云上给ECS实例解绑再绑定一个新的弹性公网IPEIP后立即尝试SSH连接。错误表现telnet 22端口显示Connection refused但sshd进程明明在运行ss -tlnp | grep 22也显示监听*:22。根因EIP绑定需要约30-60秒的全网生效时间。在此期间虽然实例内部网络正常但外部流量无法路由到该IP的22端口。内核层面表现为连接被丢弃客户端报错kex。避坑方案绑定EIP后务必等待2分钟再执行ping your-eip确认ICMP可达再用nc -zv your-eip 22测试端口。不要心急。5.2 坑2Docker容器SSH服务的端口映射陷阱场景在Docker容器中运行sshd非推荐做法但测试环境常见宿主机执行docker run -p 2222:22 ...然后ssh -p 2222 userlocalhost。错误表现本地报kex_exchange_identification: read: Connection reset by peer但nc -zv localhost 2222能连通。根因容器内sshd默认监听0.0.0.0:22但Docker的-p映射只转发到容器的eth0网卡。如果容器内sshd配置了ListenAddress 127.0.0.1则外部连接无法到达。避坑方案进入容器检查ss -tlnp | grep 22确保监听0.0.0.0:22。或者在docker run时加--network host模式不推荐生产。5.3 坑3SELinux的“无声拦截”场景CentOS/RHEL系统sestatus显示enabledsshd服务正常但SSH连接被重置。错误表现journalctl -u sshd无日志ausearch -m avc -ts recentSELinux审计日志会显示avc: denied { name_connect } for ... scontextsystem_u:system_r:sshd_t:s0-s0:c0.c1023 tcontextsystem_u:object_r:port_t:s0 tclasstcp_socket。根因SELinux策略阻止sshd绑定到22端口或接受连接。避坑方案临时禁用SELinux测试sudo setenforce 0。如果问题消失永久修复sudo semanage port -a -t ssh_port_t -p tcp 2222 # 如果用非标端口 # 或恢复默认22端口策略 sudo semanage port -m -t ssh_port_t -p tcp 225.4 坑4IPv6优先导致的DNS解析失败场景服务器同时启用IPv4和IPv6/etc/gai.conf中precedence ::ffff:0:0/96 100未设置客户端优先尝试IPv6连接。错误表现ssh userhostname失败但ssh useripv4-address成功。ssh -6 userhostname也失败。根因客户端解析hostname得到IPv6地址但服务器IPv6防火墙未开放22端口或sshd未监听IPv6。避坑方案在客户端~/.ssh/config中强制IPv4Host your-server HostName your-server.com AddressFamily inet或在服务器sshd_config中明确监听IPv4ListenAddress 0.0.0.0并确保无ListenAddress ::冲突。5.5 坑5SSH客户端的StrictHostKeyChecking陷阱场景服务器重装系统后/etc/ssh/ssh_host_*_key全部更新客户端~/.ssh/known_hosts中存有旧密钥。错误表现不是kex报错而是WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!。但有些老旧客户端或脚本会因密钥变更直接退出日志里可能混杂kex错误。避坑方案清理客户端known_hosts中对应行ssh-keygen -R your-server-ip。切勿简单设StrictHostKeyChecking no这会带来中间人攻击风险。5.6 坑6系统时间不同步引发的证书拒绝场景服务器时间比标准时间快/慢超过5分钟且使用了基于证书的认证如TLS隧道中的SSH。错误表现连接在密钥交换阶段失败但错误信息可能被客户端截断为kex类。避坑方案sudo timedatectl set-ntp on启用NTP并sudo systemctl restart systemd-timesyncd。检查时间同步状态timedatectl status。5.7 坑7sshd_config中Include指令的路径错误场景sshd_config中包含Include /etc/ssh/sshd_config.d/*.conf但/etc/ssh/sshd_config.d/目录下有语法错误的.conf文件。错误表现sshd -t配置测试可能不报错但systemctl restart sshd后服务假启动连接被重置。避坑方案手动测试所有Include文件sudo sshd -t -f /etc/ssh/sshd_config.d/01-custom.conf。删除或修复有问题的文件。5.8 坑8磁盘空间耗尽导致密钥加载失败场景/或/var分区100%满/etc/ssh/ssh_host_*_key文件存在但无法读取。错误表现journalctl -u sshd中出现Could not load host key但sshd进程仍在运行。避坑方案df -h检查磁盘清理/var/log旧日志或/tmp临时文件。sudo journalctl --vacuum-size100M可压缩日志。5.9 坑9SSH代理转发ProxyJump配置错误场景使用ssh -J jump-host usertargetjump-host配置正确但target报kex。错误表现ssh -vJ jump-host usertarget显示在jump-host上执行nc target 22失败。根因jump-host无法访问target的22端口防火墙、路由、target的sshd未监听。避坑方案登录jump-host手动执行nc -zv target-ip 22确保跳板机到目标机的22端口是通的。5.10 坑10Cloud-init的“首次启动”锁场景Ubuntu云镜像首次启动cloud-init正在初始化网络和用户此时SSH连接被拒绝。错误表现systemctl status cloud-init显示activatingsshd进程存在但连接被重置。避坑方案等待cloud-init status --wait返回done或检查/var/log/cloud-init-output.log确认初始化完成。5.11 坑11SSH密钥文件权限过松场景~/.ssh/id_rsa权限为644应为600sshd在加载用户密钥时失败。错误表现journalctl -u sshd中Authentication refused: bad ownership or modes for directory /home/user/.ssh。避坑方案chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa。5.12 坑12系统最大文件描述符限制ulimit场景服务器承载大量SSH连接ulimit -n设置过低如1024sshd无法为新连接分配socket。错误表现journalctl -u sshd中error: accept: Too many open files。避坑方案永久提高限制编辑/etc/security/limits.conf添加* soft nofile 65536 * hard nofile 65536并确保/etc/pam.d/sshd包含session required pam_limits.so。这些坑每一个都曾让我在凌晨三点对着终端发呆。现在我把它们列出来不是为了炫耀而是告诉你kex_exchange_identification报错从来不是一个单一技术点的问题而是一张横跨网络、系统、服务、安全的复杂排查网。掌握这四步定位法和十二个避坑点你就能在99%的情况下把那个让人抓狂的报错变成一次快速、精准的故障清除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2639850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…