解决错误:Failed to add the host to the list of known hosts
SSH 遇到以下错误:
The authenticity of host '[192.168.xx.xxx]:22 ([192.168.xx.xxx]:22)' can't be established.
ED25519 key fingerprint is SHA256:5UTlEnf2Cm4CV2wo7YjoG49eLusZR2kkwO1fDNM4j1U.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Failed to add the host to the list of known hosts (/xxxx/xxxxx/.ssh/known_hosts).
Already up to date.
你遇到的提示信息说明在通过 SSH 连接到 192.168.xx.xxx(端口 22)时,SSH 客户端无法验证该主机的真实性,要求你手动确认连接。但确认后,SSH 客户端无法将该主机的密钥添加到本地的 known_hosts 文件中,提示 “Failed to add the host to the list of known hosts”,表示写入失败。
问题可能的原因:
known_hosts
文件权限问题:- 当前用户可能没有对
.ssh/known_hosts
文件的写权限,导致无法将新主机的密钥写入该文件。 known_hosts
文件不存在或损坏:- 如果
.ssh/
目录下没有known_hosts
文件,或者文件损坏,也会导致 SSH 无法添加新主机信息。
解决方法:
1. 检查 .ssh
目录和 known_hosts
文件的权限
你可以通过以下命令检查 .ssh
目录及文件的权限:
ls -l ~/.ssh/
确保 known_hosts
文件的权限是 600
,.ssh
目录的权限是 700
。如果权限不正确,可以通过以下命令修复:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/known_hosts
2. 手动创建或修复 known_hosts 文件
如果 known_hosts 文件不存在,可以手动创建该文件:
mkdir -p ~/.ssh
echo '' > ~/.ssh/known_hosts
chmod 600 ~/.ssh/known_hosts
3. 手动添加主机密钥
如果自动添加失败,可以手动将该主机的密钥添加到 known_hosts
文件中。使用以下命令获取主机的密钥并添加:
ssh-keyscan -p 22 192.168.xx.xxx >> ~/.ssh/known_hosts
这将直接把目标主机的公钥添加到你的 known_hosts
文件,避免再次出现提示。
4. 检查系统权限或限制
在某些情况下,系统的安全设置(如 SELinux 或 AppArmor)可能会限制对 SSH 相关文件的更改。你可以检查系统日志或设置,确保这些安全模块没有阻止 SSH 写入 known_hosts
文件。
完成这些步骤后,SSH 客户端应能正常连接并记住该主机的公钥。