如何通过 ssh 禁用 git 上的主机密钥检查?

如何通过 ssh 禁用 git 上的主机密钥检查?

当我想执行时,在安装新的 Linux 实例后第一次看到此消息:git clone [email protected]:Company/Repo

Cloning into 'Repo'...
The authenticity of host 'github.com (140.82.121.3)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

当我回答时,yes我收到以下消息:

Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.

我知道这是为了安全。但由于我们正在为我们的公司创建一些迷你工具,因此我们更愿意在我们的开发环境中禁用此功能。

我们希望禁用它,以便我们的 bash 脚本即使在新安装上第一次也能工作。

我们怎样才能做到这一点?

PS 请不要提出安全方面的建议。我们知道风险并准备好承担。

答案1

当您通过 SSH 协议连接到 git 主机时会发生这种情况。事实上,这是 SSH 的常见做法。

它的作用是将计算机的主机密钥添加到~/.ssh/known_hosts有效地添加到 ,以确保安全。

最好的选择是在以下位置添加计算机设置~/.ssh/config

Host 172.16.0.1
    User git
    StrictHostKeyChecking no
    ...

但您应该为每个客户执行此操作,并且它可能不是最适合您的情况。

因此,您认为更合适的是更改GIT_SSH_COMMAND环境变量以告诉 git 在通过 SSH 连接时忽略主机密钥检查,这样:

GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone [email protected]:Company/Repo

答案2

简单安全的解决方案不是禁用密钥检查,而是添加 github 密钥。只需添加到您的脚本中:

ssh-keyscan github.com >> ~/.ssh/known_hosts

如果需要的话,有脚本mkdir ~/.ssh

如果ssh-keyscan不可用 -apt install或者(如果您只需要 ssh-keyscan sshopenssh-client后者更轻且足够)。

相关内容