我正在使用 Terraform 设置 EC2 实例,并且需要在此过程中运行一个大型脚本。我想从我们的 gitlab 存储库下载脚本,如下所示:
git clone [email protected]:a_name/project.git
Cloning into 'project'...
The authenticity of host 'gitlab.something.org (12.34.56.78)' can't be established.
ECDSA key fingerprint is SHA256:....
Are you sure you want to continue connecting (yes/no)? yes
Cloning into ...
当我从命令行运行它时,我必须确认,但在我的处境下这是不可能的。
然而/var/log/cloud-init-output.log
我看到的是这个(上传正确的私钥之后):
Cloning into 'project'...
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我希望这个错误仅仅是因为没有用“是”回应而导致的——有没有办法告诉 git 没问题,我知道自己在做什么,然后继续做下去?
答案1
使用自动化系统部署known_hosts
具有正确主机密钥的文件。您可以从自己的 known_hosts 中复制条目,例如使用ssh-keygen -F gitlab.something.org
(即使文件已经被哈希化,此方法仍然有效)。
该文件可以部署在~/.ssh/known_hosts
或/etc/ssh/ssh_known_hosts
。
请注意主机密钥验证不是只是为了让你确认你正在做的事情;它是为了确认你试图做的事情与实际发生的事情是否相符。与 HTTPS 非常相似,它旨在防范 MITM 攻击等外部因素——你输入的 URL 可能始终 100% 正确,但数据包可能会在几个月或几年后突然被重新路由到错误的服务器。