如何将主机名添加到 known_hosts 以供系统范围使用

如何将主机名添加到 known_hosts 以供系统范围使用

据我所知,默认的 ssh 选项StrictHostKeyChecking设置为ask,因此第一个 ssh 连接看起来像:

$ ssh host.example.com
The authenticity of host 'host.example.com (1.2.3.4)' can't be established.
RSA key fingerprint is 52:9b:0a:f1:e4:51:1b:96:8c:b7:96:7c:d3:d2:7d:9f.
Are you sure you want to continue connecting (yes/no)?
  • 假设可能存在安全问题,我想第一次自动添加主机密钥。
  • 我希望任何本地用户能够自动使用主机密钥(例如无需任何额外的ssh命令行选项)。

答案1

我认为 keyscan 更干净:

/usr/bin/ssh-keyscan $host >> $SSH_KNOWN_HOSTS

如果您需要先删除陈旧的条目:

/usr/bin/ssh-keygen -R $host -f $SSH_KNOWN_HOSTS

那么你就不需要再遭受这些警告了。

答案2

我已经阅读man sshman ssh_config找到了解决方案:

#!/bin/bash

SSH_KNOWN_HOSTS=/etc/ssh/ssh_known_hosts
[ -e $SSH_KNOWN_HOSTS ] || touch $SSH_KNOWN_HOSTS
for host in \
    host1.example.com \
    host2.example.com \
; do
    ssh-keygen -R $host -f $SSH_KNOWN_HOSTS
    ssh -q -o StrictHostKeyChecking=no -o BatchMode=yes -o UserKnownHostsFile=$SSH_KNOWN_HOSTS $host echo '' || true
done
chmod a+r $SSH_KNOWN_HOSTS

它有效但似乎有点不靠谱。你知道更短的方法来做到这一点吗?

答案3

将公钥添加到 /etc/ssh/ssh_known_hosts,它将适用于系统中的所有用户。请注意,该文件可能还有其他密钥。或者您可以指定其他已知主机文件:

ssh -o UserKnownHostsFile=/root/.ssh/example.com.known_hosts

相关内容