You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法SSH登录树莓派服务器,提示known_hosts2文件不存在

SSH登录树莓派时提示"known hosts file ~/.ssh/known_hosts2 does not exist"的解决方法

问题描述

我使用Xubuntu Linux系统,一段时间以来以为无法通过SSH登录树莓派服务器。执行ssh -v pi@192.168.0.47命令后,多次出现“known hosts file ~/.ssh/known_hosts2 does not exist”的提示。尝试从另一台PC登录时也出现相同错误,怀疑问题出在树莓派端,网上未找到有效解决方案,特此求助。

调试信息(已翻译为中文)

ssh -v pi@192.168.0.47
OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
debug1: 读取配置数据 /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config 第19行: include /etc/ssh/ssh_config.d/*.conf 未匹配到任何文件
debug1: /etc/ssh/ssh_config 第21行: 应用 * 的配置选项
debug1: 连接到 192.168.0.47 [192.168.0.47] 端口 22。
debug1: 连接已建立。
debug1: 身份文件 /home/masterofpuppets/.ssh/id_rsa 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_rsa-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ecdsa 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ecdsa-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ecdsa_sk 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ecdsa_sk-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ed25519 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ed25519-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ed25519_sk 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_ed25519_sk-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_xmss 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_xmss-cert 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_dsa 类型 -1
debug1: 身份文件 /home/masterofpuppets/.ssh/id_dsa-cert 类型 -1
debug1: 本地版本字符串 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
debug1: 远程协议版本 2.0,远程软件版本 OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1
debug1: 兼容标识匹配: OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1 匹配 OpenSSH* 兼容 0x04000000
debug1: 以 'pi' 身份认证到 192.168.0.47:22
debug1: load_hostkeys: 打开 /home/masterofpuppets/.ssh/known_hosts 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /home/masterofpuppets/.ssh/known_hosts2 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /etc/ssh/ssh_known_hosts 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /etc/ssh/ssh_known_hosts2 失败: 没有该文件或目录
debug1: 发送 SSH2_MSG_KEXINIT
debug1: 接收 SSH2_MSG_KEXINIT
debug1: kex: 算法: curve25519-sha256
debug1: kex: 主机密钥算法: ssh-ed25519
debug1: kex: 服务器->客户端 加密算法: chacha20-poly1305@openssh.com 消息认证码: <implicit> 压缩: none
debug1: kex: 客户端->服务器 加密算法: chacha20-poly1305@openssh.com 消息认证码: <implicit> 压缩: none
debug1: 等待 SSH2_MSG_KEX_ECDH_REPLY
debug1: 接收 SSH2_MSG_KEX_ECDH_REPLY
debug1: 服务器主机密钥: ssh-ed25519 SHA256:OjhTMb87orYM2OyCipPLrt2Yx+ROc46ezsVr3nBTG7u
debug1: load_hostkeys: 打开 /home/masterofpuppets/.ssh/known_hosts 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /home/masterofpuppets/.ssh/known_hosts2 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /etc/ssh/ssh_known_hosts 失败: 没有该文件或目录
debug1: load_hostkeys: 打开 /etc/ssh/ssh_known_hosts2 失败: 没有该文件或目录
debug1: hostkeys_find_by_key_hostfile: 主机密钥文件 /home/masterofpuppets/.ssh/known_hosts 不存在
debug1: hostkeys_find_by_key_hostfile: 主机密钥文件 /home/masterofpuppets/.ssh/known_hosts2 不存在
debug1: hostkeys_find_by_key_hostfile: 主机密钥文件 /etc/ssh/ssh_known_hosts 不存在
debug1: hostkeys_find_by_key_hostfile: 主机密钥文件 /etc/ssh/ssh_known_hosts2 不存在
无法确认主机 '192.168.0.47 (192.168.0.47)' 的真实性。
ED25519 密钥指纹是 SHA256:OjhTMb87orYM2OyCipPLrt2Yx+ROc46ezsVr3nBTG7u。
此密钥未关联任何其他名称
确定要继续连接吗(yes/no/[fingerprint])? yes
debug1: SELinux 支持已禁用
警告: 永久将 '192.168.0.47' (ED25519) 添加到已知主机列表。
debug1: 每 134217728 块后重新加密
debug1: 发送 SSH2_MSG_NEWKEYS
debug1: 等待 SSH2_MSG_NEWKEYS
debug1: 接收 SSH2_MSG_NEWKEYS
debug1: 每 134217728 块后重新加密
debug1: get_agent_identities: 将代理绑定到主机密钥
debug1: get_agent_identities: ssh_fetch_identitylist: 代理中无身份信息
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_rsa 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_ecdsa 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_ecdsa_sk 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_ed25519 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_ed25519_sk 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_xmss 
debug1: 将尝试密钥: /home/masterofpuppets/.ssh/id_dsa 
debug1: 接收 SSH2_MSG_EXT_INFO
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: 接收 SSH2_MSG_SERVICE_ACCEPT
debug1: 可继续的认证方式: publickey,password
debug1: 下一个认证方法: publickey
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_rsa
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_ecdsa
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_ecdsa_sk
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_ed25519
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_ed25519_sk
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_xmss
debug1: 尝试私钥: /home/masterofpuppets/.ssh/id_dsa
debug1: 下一个认证方法: password
pi@192.168.0.47 的密码: 
已通过 "password" 认证到 192.168.0.47 ([192.168.0.47]:22)。
debug1: 通道 0: 新建 [客户端会话]
debug1: 请求 no-more-sessions@openssh.com
debug1: 进入交互式会话。
debug1: pledge: filesystem
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: client_input_hostkeys: 在 /home/masterofpuppets/.ssh/known_hosts 中搜索 192.168.0.47 / (none)
debug1: client_input_hostkeys: 在 /home/masterofpuppets/.ssh/known_hosts2 中搜索 192.168.0.47 / (none)
debug1: client_input_hostkeys: 主机密钥文件 /home/masterofpuppets/.ssh/known_hosts2 不存在
debug1: 发送环境变量。
debug1: 通道 0: 设置环境变量 LC_ADDRESS = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_NAME = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_MONETARY = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_PAPER = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LANG = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_IDENTIFICATION = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_TELEPHONE = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_MEASUREMENT = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_TIME = "de_DE.UTF-8"
debug1: 通道 0: 设置环境变量 LC_NUMERIC = "de_DE.UTF-8"
debug1: client_global_hostkeys_private_confirm: 服务器对密钥 0 使用了不受信任的 RSA 签名算法 ssh-rsa,已忽略
已获取新主机密钥: ECDSA SHA256:hC6CZEjEKpsjtnXzPGLSfnGyRnpuOZPLfFsOqjuiDYi
将 192.168.0.47 的新密钥添加到 /home/masterofpuppets/.ssh/known_hosts: ecdsa-sha2-nistp256 SHA256:hC6CZEjEKpsjtnXzPGLSfnGyRnpuOZPLfFsOqjuiDYi
debug1: update_known_hosts: 已知主机文件 /home/masterofpuppets/.ssh/known_hosts2 不存在

问题分析与解决方案

从调试日志可以明确看到,你已经成功认证并进入了树莓派的交互式会话,known_hosts2不存在只是SSH客户端的调试级提示,并非登录失败的原因,之前的“无法登录”属于误解。

提示出现的原因

known_hosts2是OpenSSH旧版本使用的主机密钥存储文件,新版本默认使用known_hosts。客户端会自动尝试查找旧格式文件,找不到就会输出这个提示,属于正常兼容逻辑,完全不影响SSH功能。

消除提示的方法(可选)

如果不想看到这个提示,有两种处理方式:

  1. 在客户端创建空的known_hosts2文件:
touch ~/.ssh/known_hosts2
chmod 600 ~/.ssh/known_hosts2
  1. 修改SSH配置文件,指定只使用known_hosts:
    编辑用户级配置~/.ssh/config(若不存在则新建),添加以下内容:
Host *
    HostKeyAlias known_hosts

保存后重新发起SSH连接即可。

关于树莓派端的排查

从日志看树莓派的SSH服务运行正常,认证流程无异常。如果确实存在其他登录问题,可在树莓派上检查:

  • SSH服务状态:sudo systemctl status ssh
  • 防火墙规则:sudo ufw status(若启用防火墙,需确保22端口开放)
  • 用户目录权限:pi用户的家目录权限应为755,.ssh目录权限应为700

内容的提问来源于stack exchange,提问作者masterofpuppets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:57:01