354

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

コマンドに次の形式を使用しています。

git clone ssh://username@domain.com/repository.git

これは私のチームメンバーのほとんどにとってうまくいきました。通常、このコマンドを実行した後、Gitはユーザーのパスワードの入力を求め、クローン作成を実行します。ただし、私のマシンの1つで実行すると、次のエラーが発生します。

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

致命的:リモートリポジトリから読み取ることができませんでした。

このリポジトリへの接続にSSHキーを使用していないため、Gitがこの特定のマシンでSSHキーをチェックしている理由がわかりません。

4

27 に答える 27

546

以前にクローン作成で答えたように、gitリポジトリはエラーを引き起こします-ホストキーの検証に失敗しました。致命的:リモートエンドが予期せずハングアップしました。既知のホストのリストにGitHubを追加してください。

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
于 2015-04-01T00:17:14.907 に答える
262

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

domain.comのホストキーが変更されました。これが気に入らない場合は${HOME}/.ssh/known_hosts、編集してdomain.comの行を削除するか、SSHユーティリティにそれを実行させることにより、ローカルキャッシュから古いキーを削除します。

ssh-keygen -R domain.com

ここから、自分で行うことにより、更新されたキーを記録します

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

または、同等に、次に接続するときに、プロンプトが表示されsshたらyesと答えて、、、、または(または単純なol' )に接続します。git fetchgit pullgit pushssh domain.com

ホスト「domain.com(abcd)」の信頼性を確立できません。
RSAキーのフィンガープリントはXX:XX:...:XXです。
接続を続行してもよろしいですか(はい/いいえ)?

このプロンプトの理由は、domain.comがknown_hosts削除された後は存在せず、おそらくシステム/etc/ssh/ssh_known_hostsには存在しないためssh、接続のもう一方の端にあるホストが本当にdomain.comであるかどうかを知る方法がありません。(間違ったキーが入っている場合、/etc管理者権限を持つ誰かがシステム全体のファイルを更新する必要があります。)

ユーザーにキーを使用して認証させることも検討することを強くお勧めします。これにより、ssh-agent(サーバーへの接続ごとに全員がパスワードを入力する必要がなく)便利なキーマテリアルを保存でき、パスワードがネットワークを経由することはありません。

于 2012-11-13T15:59:18.870 に答える
80

同様の問題がありましたが、SSHキーを使用しています。上記のTupyの回答から、問題はknown_hostsファイルが存在しないか、既知のホストのリストにgithub.comが存在しないことにあることがわかりました。これが私がそれを解決するために行ったステップです-

  1. mkdir -p ~/.ssh
  2. ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
  3. ssh-keygen -t rsa -C "user.email"
  4. このコマンドで公開鍵を開き、$ cat ~/.ssh/id_rsa.pubコピーします。
  5. id_rsa.pubキーをGitHubプロファイルのSSHキーリストに追加します。
于 2015-04-28T00:16:21.833 に答える
61

これは、githubが現在既知のホストにないために発生しています。

既知のホストにgithubを追加するように求められます。これが発生していない場合は、実行ssh -T git@github.comしてプロンプトを再度受信できます。

于 2017-11-01T09:46:47.413 に答える
24

私の場合、「接続を続行してもよろしいですか(はい/いいえ)」というプロンプトで「はい」と入力する必要がありました。Enterキーを押すだけではありません。

于 2017-08-02T22:51:53.143 に答える
12

常にファイアウォールで保護されているオフィスイントラネット(それ以外の場合は危険)を使用している場合は、に次の行を含めるだけ~/.ssh/configです。

Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null
于 2017-03-04T01:40:29.913 に答える
9

新しくインストールしたシステムでも同じ問題が発生しましたが、これはudevの問題でした。/dev/ttyノードがなかったので、私はしなければなりませんでした:

mknod -m 666 /dev/tty c 5 0
于 2013-08-06T12:04:09.183 に答える
8

尋ねられたとき:

Are you sure you want to continue connecting (yes/no)?

応答としてyesと入力します

それが私の問題を解決した方法です。しかし、エンターボタンを押すだけではうまくいきません!

于 2019-04-22T07:10:50.993 に答える
6

私にとってうまくいったのは、最初に新しいコンピューターのSSHキーを追加することでした。私は、GitLabからのこれらの指示に従いました-SSHキーを追加します。私はWin10を使用しているため、これらすべてのコマンドをWindowsのGit Bashで実行する必要がありました(通常のDOSコマンドシェルでは機能しませんでした)。

次に、Git Bashで、git clone問題が発生したレポジトリを実行する必要がありました。私の場合、すでにローカルにあり、コミットを失いたくないので、別の名前にクローンを作成する必要がありました。例えば

git clone ssh://git@gitServerUrl/myRepo.git myRepo2

次に、既知のホストリストに追加するように求めるプロンプトが表示されました。質問は次のとおりです。

接続を続行してもよろしいですか(はい/いいえ)?

「yes」と入力すると、最終的に機能しました。通常、次のようなメッセージが表示されます。

警告:既知のホストのリストに「[リポジトリリンク]」(ECDSA)を恒久的に追加しました。

:Windowsを使用している場合は、すべてのコマンドにGit Bashを使用していることを確認してください。これは、通常のcmdシェルまたはpowershellでは機能しませんでした。実際、GitBashでこれを行う必要がありました。

最後に、2番目のクローンリポジトリ(myRepo2例では)を削除して最初のリポジトリに戻り、お気に入りのエディターVSCodeで通常のようにすべてのGitを実行できるようになりました。

于 2018-01-21T21:18:10.487 に答える
4

gitforWindowsを使用している場合。

  • gitGUIを開きます。
  • gitGUIでローカルのgitリポジトリを開きます。
  • リモートを追加するか、リモートがすでに存在する場合はプッシュします。
  • 続行するかどうかについての質問に「はい」と答えてください。

GUIクライアントは、キーをに追加します~/.ssh/known_hosts。これは、頻繁に行わない場合は覚えやすく、gitコマンドラインを使用する必要もありません(標準のWindowsコマンドラインにはssh-keyscan実行可能ファイルがありません)。

于 2018-04-05T16:51:53.787 に答える
4

リモートサーバーがプライベートリポジトリに接続する場合、sshを介して認証されます。ssh-keygenを使用するか、すでに公開鍵と秘密鍵を持っている場合は、秘密鍵と公開鍵のペアを作成します。秘密リポジトリの設定で公開鍵をコピーして貼り付けます。

YourPrivateRepo->設定->キーのデプロイ->デプロイキーの追加->公開キーの貼り付け。

これで、リモートサーバーはプライベートリポジトリに接続できるようになります。

注:デプロイキーは、リポジトリを読み取るためにのみアクセスできます。書き込みアクセスを明示的に許可する必要があります。

于 2019-07-18T11:31:57.830 に答える
3

ここで説明する解決策は素晴らしいですが、唯一欠けている点は、公開鍵と秘密鍵のファイル名がデフォルトのファイル名と異なる場合はどうなるでしょうか。

〜/ .sshの下に「config」というファイルを作成し、次の内容を追加します

Host github.com
    IdentityFile ~/.ssh/github_id_rsa

github_id_rsa秘密鍵ファイルに置き換えます。

于 2020-07-19T18:57:40.827 に答える
2

イメージが公開されているビルド時に、DockerFile内で同じエラーが発生しました。Dockerfileでほとんど変更を加えませんでした。

 RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs

これは、git @ github.com:...構文を使用すると、SSHを使用してクローンを作成することになり、コンテナ内では秘密鍵を使用できないためです。代わりに、RUN gitclone> https://github.com/edenhill/librdkafka.gitを使用することをお勧めします。

于 2018-07-30T13:16:29.300 に答える
1

これは、リモートホストキーが変更されたことを意味します(ホストパスワードの変更である可能性があります)。

端末は、rootユーザーとしてこのコマンドを実行することを提案しました

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]

PC/サーバーのホストリストからそのホスト名を削除する必要があります。その提案されたコマンドをコピーして、rootユーザーとして実行します。

$ sudo su                                                        // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]    // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                           // Exist from root user

もう一度やり直してください。これが機能することを願っています。

于 2016-08-14T05:02:16.703 に答える
1

git clone、git pull、git pushには、sshの代わりにhttpsを使用できます。

元:

git clone https://github.com/user/repo.git
于 2020-08-09T23:27:27.250 に答える
1

リモートホストの公開鍵が保存されていないか、保存されているものと異なっていないことが理由のようです。(セキュリティの問題に注意してください。詳細については、Greg Baconの回答を参照してください。)

この場合、私は私にプロンプ​​トを出すことに慣れてgit cloneいました:

The authenticity of host 'host.net (10.0.0.42)' can't be established.
ECDSA key fingerprint is 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
Are you sure you want to continue connecting (yes/no)?

わからない、なぜこのエラーが代わりにスローされるのか。シェルの構成またはgitSSHコマンドである可能性があります。
とにかく、を実行して同じプロンプトを表示できますssh user@host.net

于 2020-10-13T08:28:35.147 に答える
1

SSHリンクのクローンを作成する代わりに、他の方法が有効でした

git@gitlab.company.net:upendra/mycode.git

httpリンクを選択するオプションがあります

http://gitlab.company.net:8888/upendra/mycode.git

そこで、httpリンクを使用してVisual Studioのクローンを作成しましたが、うまくいきました。

于 2021-04-14T17:39:00.960 に答える
1

Tupyの回答に少し追加すると、リポジトリホストのポート番号を追加する必要がある場合があります。

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

リモートアクセスできる別のマシンがある場合は、〜/ .ssh/known_hostsを表示してポート番号を見つけることができます。

[user]$ less ~/.ssh/known_hosts
[domain.com]:8888,[000.00.000.000]:8888 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCi...
于 2021-04-15T23:59:43.017 に答える
1

Windowsセッションを使用してコードを更新しておらず、を使用している場合は、gitコマンドを実行する前に環境変数PortableGitを設定する必要があります。HOMEPATH

この例は他のユースケースに適していますが、この投稿の概念実証には適していると思います。

$env:HOMEPATH="\Users\Administrator";C:\path\to\PortableGit\bin\git.exe -C C:\path\to\repository.git pull'

于 2021-05-19T01:28:45.220 に答える
1

Gitにプッシュするとエラーコード403が返されます致命的:HTTPリクエストが失敗しました

請求の問題があるかどうかを確認します。GoogleCloudはhttps://source.cloud.google.com/へのファイルのアップロードを停止します

支払いの問題が修正された後、この問題は解決しました。しかし、キーは変更しませんでした。

ありがとう

于 2021-06-11T14:06:18.797 に答える
1

known_hostsファイルのアクセス許可も確認してください-ユーザー(〜/ .ssh / known_hosts)とグローバルファイル(/ etc / ssh / ssh_known_hosts)の両方。

私の場合、古いホストは/ etc / ssh/ssh_known_hostsにありました。rootとして削除するとsudo ssh-keygen -f /etc/ssh/ssh_known_hosts -R THE_HOST、そのファイルのアクセス許可が0600に変更されたため、rootとしてTHE_HOSTへのSSHが機能しましたが、他のユーザーの場合は「ホストキーの検証に失敗しました」で失敗しました。修正は次のとおりです。

sudo chmod 644 /etc/ssh/ssh_known_hosts
于 2022-01-26T12:19:56.747 に答える
0

Jenkinsfileまたは任意の場所で「https」URL形式の「giturl」を使用できます。

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'

于 2016-05-11T09:58:12.223 に答える
0

または、MSYS2端末(Windows *の場合)とパスフレーズを使用している場合、端末が「パスフレーズの入力」を正しくプロンプトせず、SSHへのアクセスを拒否している可能性があります。

Windowsを使用している場合は、代わりにGit BashまたはPowershellを使用してプロンプトを表示し、正しく接続することができます。(私は現在、MSYSのソリューションを探しています。)

*関連するかどうかわからない。

于 2021-09-26T11:21:04.853 に答える
0

問題: ホストキーの検証に失敗しました。致命的:リモートリポジトリから読み取ることができませんでした。

正しいアクセス権があり、リポジトリが存在することを確認してください。

解決策: すべての設定を確認し、GitHubの主要な設定も確認しました。最後に、GitのURLをからファイルに変更しました"git@github.com:palvsv/travelo-moon.git"。これで機能"https://github.com/palvsv/travelo-moon.git"します。.config"yourprojectdirectory/.git/config"

于 2021-10-08T08:56:04.730 に答える
0

私の場合、バックアップのために「known_hosts」ファイルの名前を「known_hosts.del」に変更します。次に、git clone xxxを再実行し、「yes」と入力します。新しい「known_hosts」を作成します

于 2022-01-26T01:38:29.300 に答える
-3

同様の問題が発生しましたが、残念ながらGitExtensions HMIを使用していて、パスフレーズを書いたことを忘れていました。HMIで....それを忘れてください!キーを生成するときにパスフレーズを入力しないでください。

于 2016-01-22T18:28:42.897 に答える
-6

git clone自分のものではないリポジトリを試したときに、このメッセージが表示されました。修正は、フォークしてからクローンを作成することでした。

于 2018-04-27T01:00:47.413 に答える