Tabby 连接 SSH 报 WrongServerSig:一次从配置怀疑到版本定位的排查记录

背景 一台 Arch Linux KDE 桌面环境中使用 Tabby 作为日常终端和 SSH 客户端。系统中维护了多个 SSH 连接配置,其中包括两台通过公网入口和端口转发访问的树莓派。 某次调整树莓派系统后,Tabby 连接这两台树莓派时同时报错: 奇怪的是,其他服务器在 Tabby 中都能正常连接,只有这两台树莓派出问题。 一开始很容易怀疑是 SSH 配置、host key、known_hosts、端口映射或树莓派系统本身的问题。但最终排查结果证明:问题并不在服务器端,也不在 .ssh/config,而是 Tabby 某个版本的内置 SSH 实现存在兼容性问题。 初始现象 Tabby 中通过 SSH profile 连接树莓派时失败,界面显示类似: 但直接在系统终端中执行 OpenSSH 命令可以正常连接: 进入系统后,两个远程系统都正常响应,说明: 更关键的是,在 Tabby 中打开一个普通本地 shell,再手动执行系统 ssh 命令,也可以正常连接两台树莓派。 这说明问题不是 Tabby 作为终端模拟器的问题,而是 Tabby 自己的 SSH profile / …

两台内部服务器 Postfix 发信配置整理记录:在不破坏中继功能的前提下统一身份与地址改写

背景 某内部环境中有两台 Debian 系服务器,分别承担虚拟化管理与备份服务。两台机器都不是实际的公网邮件服务器,也不直接对外投递邮件,而是作为本机系统邮件的提交端使用 Postfix。 整体结构如下: 其中: 代表真正负责对外收发和中继的邮件服务器。 两台内部主机上的 Postfix 只负责把本机系统邮件、告警邮件、root 邮件等提交给该邮件服务器。两台机器各自对应一个真实存在的邮件账户: 这两个账户在邮件系统中是独立账户,均可正常收发邮件。 原始状态 两台机器的对外发信功能已经长期正常运行,说明核心 SMTP 中继链路本身没有问题。 关键配置大致如下: 这些项目是邮件能否成功提交到外部邮件服务器的核心配置,因此整理过程中没有改动。 真正需要检查的是一些非核心但影响一致性和邮件头表现的项目: 发现的问题 检查后发现两台机器的核心中继配置一致,但 Postfix 自身身份和地址改写规则并不完全一致。 主要差异包括: 同时,系统层面的主机名解析也进行了确认: 整理后,两台机器的系统层面主机名保持简单结构: 这里的 host-a.lan、host-b.lan 只作为内部局域网身份使用,不等同于公网管理入口,也不等同于实际邮件服务器。 generic 是什么 generic 指的是 Postfix 的出站地址改写表,对应配置项是: 它不负责连接 SMTP 服务器,不负责 TLS,不负责 SASL 登录,也不负责端口配置。 它的作用是:在邮件交给外部邮件服务器之前,把本机生成的发件人地址改写成真实存在的邮箱账户。 例如: 在主机 A 上统一改写为: 在主机 B 上统一改写为: …

IPv6:互联网地址从“挤在一起”走向“每台设备都有自己的门牌号”

很多人第一次听到 IPv6,通常会把它理解成“IPv4 的升级版”或者“更长的 IP 地址”。这个说法并不算错,但如果只停留在这个层面,就很容易错过 IPv6 真正重要的地方。 IPv6 不只是把地址变长,而是改变了家庭网络、运营商网络、服务器访问、防火墙、安全模型,以及未来互联网架构的很多基础逻辑。 简单来说,IPv4 时代的互联网像是一栋大楼里很多人共用一个门牌号;IPv6 时代则更接近于每个房间、每台设备都可以拥有自己的独立门牌号。 一、IP 地址到底是什么? 互联网通信的基础,是设备之间能够找到彼此。 电脑访问网页、手机刷视频、服务器返回数据,本质上都是一个设备向另一个设备发送数据包。为了让这些数据包知道该去哪里,每台参与网络通信的设备都需要一个地址,这就是 IP 地址。 IPv4 地址大家比较熟悉,例如: IPv6 地址看起来更长,例如: IPv4 和 IPv6 都是 IP 地址,但它们所在的时代背景完全不同。 二、IPv4 为什么不够用了? IPv4 使用 32 位地址,理论上大约可以提供 43 亿个地址。 在互联网早期,这个数字看起来非常充足。那时联网设备主要是服务器、大学电脑、研究机构网络和少量个人电脑。 但后来情况彻底变化了。个人电脑、智能手机、平板、电视、游戏机、路由器、摄像头、智能家居设备、工业设备、汽车、传感器都开始联网。全球联网设备数量远远超过了 IPv4 能直接提供的地址数量。 于是,IPv4 地址开始不够用了。 为了解决这个问题,人们大量使用 NAT,也就是网络地址转换。 家庭网络中常见的结构是: 家里的电脑、手机、电视、NAS 可能都使用类似 192.168.1.x 的内网地址。它们并没有真正独立的公网 IPv4 …

互联网的诞生:从 ARPANET 到 World Wide Web

互联网已经成为现代社会最重要的基础设施之一。然而在二十世纪中期,计算机仍然是彼此孤立的大型设备。互联网的出现并非一次性发明,而是几十年技术积累的结果。从早期计算机互联需求,到 ARPANET 的建立,再到 TCP/IP、DNS 与 World Wide Web 的出现,一条清晰的技术演化路径逐渐形成。 本文按照时间顺序,简要梳理互联网诞生的关键历史节点。 一、互联网出现之前:孤立的计算机时代(1950s–1960s) 二十世纪五十至六十年代,计算机具有以下特征: 通常一台计算机会服务一个机构,例如大学实验室、科研机构或军方单位。不同机构之间的数据交换主要依赖磁带、纸带等离线方式。 随着科研合作需求增加,一个问题逐渐显现: 如何让不同计算机之间实现远程通信和资源共享。 这一需求成为计算机网络研究的起点。 二、ARPANET:互联网的起点(1969) 互联网历史通常以 ARPANET 作为起点。 ARPANET 由美国国防部的 ARPA(Advanced Research Projects Agency) 资助建设,其目标是让不同科研机构的计算机能够互联。 1969 年,ARPANET 建立了最初的四个节点: 这些节点通过专用通信线路连接,形成最早的计算机网络。 互联网历史上的第一条消息 1969 年 10 月 29 日,UCLA 向 Stanford Research Institute 发送远程登录指令: login 系统在发送过程中崩溃,仅成功传输前两个字符: lo 因此,互联网历史上的第一条网络信息实际上是: lo 这一事件后来成为互联网发展史中广为流传的一个细节。 三、关键技术:分组交换(Packet …

构建全球域名变化观测系统:从 Root DNS 到 Zone File 监控

一、DNS 根服务器体系 DNS(Domain Name System)是互联网最核心的基础设施之一。在 DNS 架构中,最顶层是 Root DNS(根服务器)。 全球共有: 13 个逻辑根服务器 它们分别为: 需要注意的是: 当前全球 root server 节点数量已经超过: 因此根服务器实际上分布在全球各地,例如: 日本的 M-root 由 WIDE Project 运营。 二、Root Zone 的规模 Root DNS 的数据量其实非常小。 Root zone 文件记录的内容是: 也就是说,它只保存: 当前 root zone 文件大小大约: 包含 DNSSEC 后约: 因此: 整个 Root DNS 可以轻松镜像。 获取地址: 三、监控 Root …

域名的诞生:互联网最早的域名与顶级域名体系

互联网今天已经拥有数亿个域名,但很少有人知道:域名体系其实诞生于 1985 年。 本文将系统介绍: 一、互联网为什么需要域名 在互联网早期,计算机之间通信依赖 IP 地址。 例如: 26.0.0.73 这种数字地址虽然对计算机来说没有问题,但对于人类来说: 因此工程师提出了一种新的系统: DNS(Domain Name System)——域名系统 DNS 的作用就是: 把人类可读的名称转换为计算机可识别的 IP 地址。 例如: symbolics.com → IP地址example.net → IP地址 二、DNS 系统的提出 DNS 系统在 1983 年被正式提出,并在随后几年逐渐部署。 DNS 的设计核心是: 层级结构(Hierarchical Structure) 互联网被组织成一棵树: .├── com├── org├── net├── edu├── gov└── mil 最顶端的 . 被称为: Root(根域) 所有域名最终都属于这棵树。 三、第一个域名的诞生 …

TCP/IP 协议详解:互联网通信的核心架构

互联网能够在全球范围内稳定运行,依赖于一套统一的通信规则体系。其中最核心的就是 TCP/IP 协议族(TCP/IP Protocol Suite)。它定义了数据如何在网络中被封装、传输、路由以及接收,是现代互联网的基础。 本文将从 协议结构、分层模型、关键协议、数据传输过程以及连接机制 等方面,对 TCP/IP 进行系统介绍。 一、TCP/IP 协议的基本概念 TCP/IP 是 Transmission Control Protocol / Internet Protocol 的缩写。 它并不是单一协议,而是 一组协议的集合,用于解决网络通信中的三个核心问题: 在 TCP/IP 体系中: 可以用一个简单的类比理解: 协议 作用 IP 负责确定数据要发送到哪里 TCP 负责确保数据完整到达 如果将网络通信比作邮寄包裹: 二、TCP/IP 的四层模型 TCP/IP 协议通常采用 四层结构模型。 Application Layer 应用层Transport Layer 传输层Internet Layer 网络层Network Interface 网络接口层 常见协议在各层中的位置: 应用层HTTP …

从网段到 CIDR:理解 IP 地址后面的 /24、/31 与路由聚合

在学习 TCP/IP 网络时,很多概念表面上看只是记忆题,比如“网段”“子网掩码”“CIDR”“广播地址”“路由聚合”。但这些概念其实都不是孤立存在的,它们共同描述了一件事: 互联网中的地址如何被组织、划分、识别与转发。 本文从最基础的“网段”开始,一直讲到家庭网络为什么几乎总是 /24,以及互联网为什么必须依靠 CIDR 聚合 才能维持全球路由系统的可扩展性。 一、网段是什么 所谓网段,本质上就是: 一组属于同一个网络范围、可以按同一套网络规则被识别的 IP 地址集合。 更直白一点说,网段就是“某一批 IP 地址所在的那个网络范围”。 例如: 192.168.1.1192.168.1.2192.168.1.3192.168.1.10192.168.1.254 这些地址如果使用相同的网络前缀,就可以被认为属于同一个网段,例如: 192.168.1.0/24 这表示: 因此,网段不是单个 IP,而是一个地址范围。 二、为什么要有网段 如果没有“网段”概念,那么整个网络世界就会变成“所有设备都直接平等地散落在一个巨大地址池里”,这会带来两个问题: 第一,地址管理混乱。第二,转发效率极低。 所以 TCP/IP 网络采用的不是“纯主机编号”结构,而是: 网络部分 + 主机部分 这意味着一个 IP 地址不是纯随机编号,它内部自带结构。例如: 192.168.1.25 在某种掩码条件下,可以理解成: 也就是“在 192.168.1 这个网络里的第 25 号主机”。 这就是网段存在的意义:先确定属于哪个网络,再确定这个网络里的哪一台设备。 三、IP 地址后面的 /24 是什么意思 像下面这样的写法: 192.168.1.10/24 …

Packet Switching(分组交换)原理解析

一、引言 现代互联网建立在 Packet Switching(分组交换) 的基础之上。这一设计使得全球网络能够在分布式环境中稳定运行,并具备极强的容错能力和扩展能力。 与早期电话网络的 Circuit Switching(电路交换) 不同,Packet Switching 将数据拆分为多个独立的数据包,通过网络中的不同路径传输,最终在接收端重新组合。 本文介绍 Packet Switching 的基本概念、传输过程以及其在互联网架构中的重要作用。 二、Packet Switching 概念 Packet Switching(分组交换) 是一种网络通信方式,其核心思想为: 将完整的数据拆分为多个数据包(packet),分别在网络中独立传输,并在接收端重新组合。 每个 packet 通常包含两部分: 数据部分(payload)控制信息(header) Header 中通常包含以下信息: 由于每个 packet 都携带目标地址,因此它们可以在网络中独立路由。 三、数据传输过程 在 Packet Switching 网络中,数据并不会沿着固定路径传输,而是由网络中的路由设备动态决定路径。 例如,从日本访问美国服务器时,数据可能经过多个网络节点: 客户端 ↓本地路由器 ↓ISP ↓国际骨干网络 ↓目标服务器 在这一过程中,不同的数据包可能走不同路径,例如: Packet1: Osaka → Tokyo → Los Angeles …

Linux 命令行查看 SSL 证书有效期的方法

在服务器运维过程中,经常需要确认 SSL 证书是否即将过期。尤其是在使用 Let’s Encrypt 自动签发证书的环境中,如果未及时发现证书失效,可能导致 HTTPS 服务中断。 本文记录一种 完全基于命令行 的证书有效期检查方法,适用于任何 Linux 系统。 一、证书文件结构 典型的证书目录如下: 说明: 查看证书有效期时,仅需要 fullchain.pem。 二、查看证书生效时间与过期时间 使用 openssl: 示例输出: 字段含义: 字段 含义 notBefore 证书开始生效时间 notAfter 证书过期时间 其中 notAfter 是最需要关注的字段。 三、仅查看证书过期时间(常用) 如果只关心证书何时失效: 输出示例: 适合脚本检测或快速人工确认。 四、查看完整证书信息 当需要排查 HTTPS 或 TLS 问题时,可以查看完整证书内容: 可获得: 该方式常用于反向代理或 TLS 握手问题分析。 五、计算证书剩余有效天数 服务器自动化运维中,通常需要判断证书还剩多少天过期。 可使用: 示例输出: …