リモート リポジトリへの接続時の Git エラー: 「ホスト キーの検証に失敗しました」
P粉668113768
2023-08-27 12:34:09
<p>Web サーバー上にあるリモート Git リポジトリに接続し、コンピュータにクローンを作成しようとしています。 </p>
<p>私のコマンドは次の形式を使用します: </p>
<pre class="brush:php;toolbar:false;">git clone ssh://username@domain.example/repository.git</pre>
<p>これはほとんどのチームメンバーにとってうまく機能します。通常、このコマンドを実行すると、Git はユーザー パスワードの入力を求め、クローンを実行します。ただし、マシンの 1 つで実行すると、次のエラーが発生します: </p>
<ブロック引用>
<p>ホストキーの検証に失敗しました。 </p>
<p>致命的: リモートから読み取ることができません
リポジトリ。 </p>
</blockquote>
<p>このリポジトリへの接続に SSH キーを使用していないため、Git がこの特定のマシンでキーをチェックする理由がわかりません。 </p>
前に で行ったように、git リポジトリのクローンを作成すると、「ホスト キーの検証に失敗しました」というエラーが発生しました。致命的: リモート エンドが予期せずハングアップしました 、既知のホストのリストに GitHub を追加しました:
リーリークローン URL の
ssh://
プレフィックスで示されているように、SSH プロトコル経由で接続しています。 SSH では、各ホストがキーを持ちます。クライアントは特定のアドレスに関連付けられたホスト キーを記憶しており、ホスト キーが変更されると接続を拒否します。これにより、中間者攻撃を防止します。
リーリーdomain.example
のホスト キーが変更されました。 これが疑わしいものではないと思われる場合は、${HOME}/.ssh/known_hostsを編集して
を削除し、古いキーの domain.example## をローカル キャッシュから削除してください。行番号 または、SSH ユーティリティに任せますリーリー
ここから、更新されたキーを自分で記録できますまたは、同様に、次回
git fetch、
が削除後にgit pull
、またはgit Push ## を使用して接続するときに、
sshにこれを実行させます。 # (またはプレーン
ssh ドメイン.example)、プロンプトが表示されたら「はい」と答えます
リーリーこのプロンプトが表示される理由は、
domain.exampleknown_hosts
は (誰もがサーバーに接続するたびにパスワードを入力する必要がなく) 利便性のためにキーマテリアルを保存でき、パスワードはネットワーク経由で送信されません。に存在せず、システムの
/etc/ssh/ssh_known_hosts にも存在しない可能性があるためです。したがって、
sshには、接続の相手側のホストが実際に
domain.exampleであるかどうかを知る方法がありません。 (
/etcのキーが間違っている場合は、管理者権限を持つ誰かがシステム全体のファイルを更新する必要があります。)
ユーザーがキーを使用して認証できるようにすることを検討することを強くお勧めします。このようにして、
ssh-agent