每次推送时,Git 都会在我的“known_hosts”文件上不断构建

3 git github amazon-web-services aws-codecommit

我创建了一个本地 git 存储库,我想将其推送到 Github 和 Amazon 的 CodeCommit。

我设置了两个遥控器并相应地命名它们:

git remote add github git@github.com:mygit/myrepo.git
Run Code Online (Sandbox Code Playgroud)

git remote add codecommit ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/myrepo
Run Code Online (Sandbox Code Playgroud)

Github 存储库工作正常。CodeCommit 存储库可以工作,但每次我运行推送时:

git push -u codecommit master
Run Code Online (Sandbox Code Playgroud)

它会在每次推送时添加到我的“~/.ssh/known_hosts”文件中。如果我继续,我的“known_hosts”文件中将有一百万个条目。

我能看到的唯一区别是 CodeCommit 远程链接上的格式,它与 Github 格式略有不同,如上所示。当您在 CodeCommit 上创建存储库时,它会提供远程链接:

git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/myrepo
Run Code Online (Sandbox Code Playgroud)

由于我将本地 git 存储库推送到 CodeCommit,因此我删除了“git clone”部分并将其替换为:

git remote add codecommit ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/myrepo
Run Code Online (Sandbox Code Playgroud)

CodeCommit 还要求您使用以下内容创建“~/.ssh/config”文件:

Host git-codecommit.*.amazonaws.com
  User Your-IAM-SSH-Key-ID-Here
  IdentityFile ~/.ssh/Your-Private-Key-File-Name-Here
Run Code Online (Sandbox Code Playgroud)

我按照指示创建了这个文件。

有人在使用两个遥控器时遇到过这个问题:Github 和 CodeCommit?

Dan*_*owe 5

CodeCommit 可能位于负载均衡器后面,并且每个节点都有自己的 SSH 主机密钥。当您访问不同的节点时,它们会向您提供自己的主机密钥,您的 ssh 客户端将其缓存在known_hosts.

您可以忽略这一点,但如果您不希望密钥累积,则可以选择忽略此遥控器的缓存。

在 中~/.ssh/config,只需向您已添加的条目添加几个参数即可。

Host git-codecommit.*.amazonaws.com
  User Your-IAM-SSH-Key-ID-Here
  IdentityFile ~/.ssh/Your-Private-Key-File-Name-Here
  UserKnownHostsFile /dev/null
  CheckHostIP no
Run Code Online (Sandbox Code Playgroud)