当我想执行时,在安装新的 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 ssh
,openssh-client
后者更轻且足够)。