忽略主机

忽略主机

我们正在尝试加快 RAC 安装的 oracle 节点的安装速度。这要求我们安装并配置 ssh,这样它就不会提示输入密码。

问题是:第一次使用时,系统会提示我们

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

有没有办法避免这种情况,或者我们注定要在每台服务器上手动连接至少一次?

答案1

2019 年 12 月更新:

正如 Chris Adams 在下面指出的那样,自此答案撰写以来的 6.5 年间,Openssh 发生了相当大的变化,并且有一个比以下原始建议安全得多的新选项:

* ssh(1): expand the StrictHostKeyChecking option with two new
   settings. The first "accept-new" will automatically accept
   hitherto-unseen keys but will refuse connections for changed or
   invalid hostkeys. This is a safer subset of the current behaviour
   of StrictHostKeyChecking=no. The second setting "off", is a synonym
   for the current behaviour of StrictHostKeyChecking=no: accept new
   host keys, and continue connection for hosts with incorrect
   hostkeys. A future release will change the meaning of
   StrictHostKeyChecking=no to the behaviour of "accept-new". bz#2400

StrictHostKeyChecking no因此,不要在文件中设置,而是ssh_config设置StrictHostKeyChecking accept-new.


StrictHostKeyChecking no在您的文件中设置/etc/ssh/ssh_config,它将成为服务器上每个用户使用的全局选项。或者将其设置在您的~/.ssh/config文件中,该文件将成为仅当前用户的默认值。或者您可以在命令行上使用它:

ssh -o StrictHostKeyChecking=no -l "$user" "$host"

以下是其工作原理的解释man ssh_config (或参见这个更新的版本):

StrictHostKeyChecking

      如果该标志设置为“yes”,SSH永远不会自动将主机密钥添加到$HOME/.ssh/known_hosts文件中,并拒绝连接到主机密钥已更改的主机。这提供了针对特洛伊木马攻击的最大程度的保护,但是,当文件/etc/ssh/ssh_known_hosts维护不善或频繁连接到新主机时,这可能会很烦人。此选项强制用户手动添加所有新主机。如果该标志设置为“否”,SSH会自动将新的主机密钥添加到用户已知的主机文件中。如果此标志设置为“询问”,则只有在用户确认这是他们真正想要做的事情之后,新的主机密钥才会添加到用户已知的主机文件中,并且 SSH将拒绝连接到主机密钥已更改的主机。在所有情况下都会自动验证已知主机的主机密钥。论据必须是“是”、“否”或“问”。默认为“询问”。

答案2

ssh-keyscan- 收集 ssh 公钥

如果您已经知道要连接的主机列表,则只需发出:

ssh-keyscan host1 host2 host3 host4

您可以选择-H让它散列结果,就像 ssh 现在默认的那样

你也可以-t keytype按键类型dsarsa、 或者ecdsa您是否偏好选择要获取哪种类型的密钥而不是默认密钥。

运行后,ssh-keyscan它将预先填充您的已知主机文件,并且 ssh 不会询问您添加新密钥的权限。

答案3

忽略主机

忽略 HostKeyChecking。为此,我使用例如:

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email protected]

添加主机

.ssh/known_hosts在第一次连接之前添加主机/服务器的指纹。这是更安全的方法。

答案4

在尝试之前执行以下代码片段。

mkdir -p ~/.ssh     
echo "Host *" > ~/.ssh/config     
echo " StrictHostKeyChecking no" >> ~/.ssh/config

ps:严格不适用于生产服务器,请小心 ManInMiddle

相关内容