首页/安全/取证与溯源速查/known_hosts 出站连接线索
Linux 取证135 条

known_hosts 出站连接线索

用户目录中的 known_hosts 记录本机曾主动连接过的 SSH 主机,是被控主机视角下的横向活动线索之一。

取证与溯源速查安全更新于 2026-10-13

记录的是主动连接过的主机

SSH 客户端第一次连接某台主机时会记录对方的公钥指纹到 ~/.ssh/known_hosts,下次连接时用于校验。从取证角度看,这个文件反映的是本机作为客户端主动连出去的目标:它是判断「这台主机有没有横向连接到别处」的线索之一,视角与服务器端的认证日志正好互补。

哈希化条目怎么处理

出于隐私考虑,很多发行版默认开启 HashKnownHosts,写入的主机名是加盐哈希值,直接读文件看不到明文主机名,只能统计条目数量。要判断某个具体主机是否在列表里,可以用 ssh-keygen 的查找功能按主机名比对,而不是靠肉眼或字符串搜索。

基本信息

适用平台Linux/macOS(OpenSSH 客户端)
路径~/.ssh/known_hosts,也可能在 ~/.ssh/known_hosts2
条目形态明文主机名或哈希化主机名加公钥类型与密钥
哈希默认多数发行版默认开启 HashKnownHosts
查找命令ssh-keygen -F <主机名> 检查该主机是否在列表中

典型使用场景

  • 判断横向活动:确认本机是否连接到过其他内网主机
  • 解释出站连接:配合认证日志说明某个 SSH 连接的来源与目标
  • 清理确认:处置后核对清单中是否仍有可疑目标
  • 批量盘点:统计多台主机 known_hosts 的交集,找出共同跳板
  • 与其他线索互证:远程主机地址可与网络日志中的出站连接对照

查看与查找

查看与查找
# 条目数量与文件时间
wc -l /root/.ssh/known_hosts 2>/dev/null
stat -c '%n | mtime=%y' /root/.ssh/known_hosts 2>/dev/null

# 明文条目下可以直接取第一列(哈希条目取出来是乱码)
cut -d' ' -f1 /root/.ssh/known_hosts 2>/dev/null | head -20

# 判断某台主机是否在列表中(哈希条目也能查)
ssh-keygen -F 10.0.3.21 2>/dev/null

# 逐个核对清单中的目标是否仍应存在
for h in 10.0.3.21 10.0.3.22; do printf '%s -> ' "$h"; ssh-keygen -F "$h" >/dev/null 2>&1 && echo 在列 || echo 不在列; done

文件条目读法

字段含义分析用法
主机名或哈希值连接过的目标主机哈希条目需用命令行查找
密钥类型如 ssh-ed25519、ssh-rsa可辅助判断客户端版本与配置
公钥内容对端主机公钥与目标主机实际公钥比对可确认身份
被注释的条目以 # 开头可能表示连接失败或被移除
文件时间最后写入时刻新增条目时间接近事件窗口即值得深查
条目只说明连接过,不代表登录成功:认证失败同样可能在交互过程中留下记录,判断成功与否要回到目标主机的认证日志。
清理该文件不会影响服务端日志,双向核对(本机 known_hosts 与对端登录记录)才能确认一次横向连接是否真正发生。

易错点

  • 肉眼读哈希条目:看不到主机名就以为没有内容,漏掉关键线索
  • 把连接记录当登录成功:仅表示发起过连接,认证结果需另行确认
  • 只查当前用户的 known_hosts:其他账号与服务账号的同名文件同样要看
  • 忽略文件时间:新增条目的时间接近事件窗口时价值最高
  • 清理后不截图留证:文件被覆盖后无法还原原始条目

数据来源与参考

  • OpenSSH 手册(ssh_config 与 known_hosts)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌