1. ホーム
  2. git

[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。

2022-01-30 17:26:45

質問

Web サーバー上にあるリモートの Git リポジトリに接続し、私のマシンにクローンしようとしています。

私はコマンドに次のフォーマットを使用しています。

git clone ssh://[email protected]/repository.git

これは、私のチームのほとんどのメンバーでうまくいっています。 通常、このコマンドを実行すると、Gitはユーザーのパスワードを要求し、それからクローン作成が実行されます。 しかし、私のマシンの一つで実行すると、次のようなエラーが発生します。

ホストキーの検証に失敗しました。

fatal: リモートから読み取れませんでした。 リポジトリに保存されます。

このリポジトリへの接続には SSH 鍵を使っていないので、なぜ Git がこの特定のマシンで SSH 鍵をチェックしているのかはよくわかりません。

解決方法は?

SSHプロトコルで接続していることを示すように ssh:// のプレフィックスを付けてください。SSH を使う場合、すべてのホストが鍵を持っています。クライアントは特定のアドレスに関連付けられたホスト鍵を記憶しており、ホスト鍵が変更されたように見える場合は接続を拒否します。これにより、中間者攻撃を防ぐことができます。

domain.com のホスト鍵が変更されました。 もし、これが怪しいと感じないのであれば を編集して、ローカルキャッシュから古いキーを削除してください。 ${HOME}/.ssh/known_hosts の行を削除するか、SSHユーティリティにそれをさせる。

ssh-keygen -R domain.com

ここから、更新されたキーを記録するために、自分で

ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hosts

または、同等に ssh で接続すると、次回はそれをやってくれます。 git fetch , git pull または git push (あるいは単なる ssh domain.com というプロンプトが表示されたら、「はい」と答えてください。

ホスト 'domain.com (a.b.c.d)' の真正性を確立できません。
RSAキーのフィンガープリントはXX:XX:...:XXです。
本当に接続を続行しますか(yes/no)?

このプロンプトが表示された理由は、domain.comがあなたの known_hosts を削除した後、おそらくはシステムの /etc/ssh/ssh_known_hosts ということで ssh は、接続の相手側のホストが本当にdomain.comであるかどうかを知る術がない。(もし間違ったキーが /etc 管理者権限を持つ誰かが、システム全体のファイルを更新しなければならないでしょう)。

ユーザー認証もキーで行うことを強くお勧めします。そうすれば ssh-agent は、利便性のために鍵の材料を保存することができ(全員がサーバーに接続するたびにパスワードを入力するのではなく)、パスワードはネットワーク上を通過しません。