在 bash 脚本中回答 yes

Raf*_*ael 28 shell scripting ssh git

我正在尝试git clone通过 bash 脚本执行一个低谷,但是我第一次运行脚本并且服务器未知时脚本失败。我有这样的事情:

yes | git clone git@github.com:repo/repoo.git
Run Code Online (Sandbox Code Playgroud)
yes | git clone git@github.com:repo/repoo.git
Run Code Online (Sandbox Code Playgroud)

但它忽略了yes. 您知道如何强制git clone将密钥添加到已知主机吗?

Cal*_*leb 26

将以下内容添加到您的~/.ssh/config文件中:

Host github.com
    StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)

任何使用 open-ssh 客户端建立远程 shell(使用 git 客户端)的操作都应该跳过对 github.com 的密钥检查。

这实际上是一个坏主意,因为任何形式的跳过检查(无论您是自动点击是还是首先跳过检查)都为处于中间安全妥协的人创造了空间。更好的方法是known_hosts在需要运行一些自动连接的脚本之前检索和验证指纹并将其存储在文件中。

  • 强烈倾向于*检索和验证指纹并将其存储在`known_hosts`文件之前*。 (2认同)

jfg*_*956 5

yes输出y。RSA 密钥接受需要yes。您可以尝试使用yes yes | git clone git@github.com:repo/repoo.gitsoyes输出yes而不是y.

  • 出于某种原因,这对我来说不适用于 git clone。 (5认同)

小智 5

ssh-keyscan -H github.com >> ~/.ssh/known_hosts在克隆之前运行将添加密钥并防止出现提示。

当然,这种方法也容易受到 MITM 攻击。