使用 ssh,如何自动验证与未知服务器的第一个连接

使用 ssh,如何自动验证与未知服务器的第一个连接

首次使用 连接未知服务器时ssh,他会获得:

$ ssh root@<IP>
The authenticity of host '<IP> (<IP>)' can't be established.
ECDSA key fingerprint is SHA256:ZmlG4578we0daN56544KJFPYwH0vOi2bMPkLTv8io.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

如果环境完全在控制之下并且连接是在脚本中完成的(在我的情况下是云基础设施创建脚本),这将是痛苦的。

有没有办法自动接受该服务器并存储 IP 而known_hosts无需手动验证?

我浏览了手册页,但找不到任何适用的内容。

也尝试过,echo yes | ssh -q root@<IP>但没有成功。

答案1

对于 OpenSSH [强调我的]:

StrictHostKeyChecking

如果此标志设置为yesssh(1)则永远不会自动将主机密钥添加到文件~/.ssh/known_hosts,并拒绝连接到主机密钥已更改的主机。这提供了对中间人 (MITM) 攻击的最大保护,尽管当 维护/etc/ssh/ssh_known_hosts file不善或频繁连接到新主机时可能会很烦人。此选项强制用户手动添加所有新主机。

如果此标志设置为accept-new则会ssh自动将新的主机密钥添加到用户的known_hosts文件中,但不允许连接到具有已更改主机密钥的主机。如果将此标志设置为nooffssh将自动将新主机密钥添加到用户已知主机文件中,并允许与已更改主机密钥的主机的连接继续进行,但会受到一些限制。如果将此标志设置为ask(默认值),则只有在用户确认这是他们真正想要做的事情后,才会将新主机密钥添加到用户已知主机文件中,并且ssh将拒绝连接到主机密钥已更改的主机。在所有情况下,将自动验证已知主机的主机密钥。

来源

您希望StrictHostKeyChecking accept-new(或StrictHostKeyChecking=accept-new,两种语法都可以)在/etc/ssh/ssh_config或中,或者在调用时~/.ssh/config作为选项参数:-ossh

ssh -o StrictHostKeyChecking=accept-new …

相反,如果您认为这是您想要的,accept-new您可以指定。no

答案2

您可以使用如下命令:

ssh -o StrictHostKeyChecking=no root@<IP>

以避免出现此消息,但这会使你容易受到中间人攻击,所以恕我直言这不是一个好主意

相关内容