Gitクローン/「キーをキャッシュに保存しますか?」で継続的にフリーズするプル


159

BitBucketアカウントからWindows 10ラップトップ(GitBashを実行)にレポのクローンを作成しようとしています。接続に必要なすべての手順を完了しました(SSHキーをセットアップし、git @ bitbucket.orgをSSHで正常に接続することで確認しました)。ただし、リポジトリを複製しようとするたびに、Bitbucketのキーをキャッシュすることを確認した後、プロンプトが継続的に切断されます。

User@Laptop MINGW64 /C/Repos
$ git clone git@bitbucket.org:mygbid/test.git
Cloning into 'test'...
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

ファイルは複製されず、結果は空のリポジトリになります。このリポジトリからgit pull originマスターを開始しようとすると、キーのキャッシュも要求され、フィードバックなしでハングします。テストSSHを実行するときにキーのキャッシュを要求しないにもかかわらず、git操作は失敗する前に常にキーを要求します。

処理するエラーメッセージがないので、何が問題なのか本当に困っています。非常に小さなものを含め、複数のリポジトリを試しましたが、まったく成功しませんでした。

回答:


189

Windows 10でリポジトリを複製するときにもこの問題が発生しました。

問題のサーバー(あなたの場合:bitbucket.org)にSSHで接続するためにPutty GUIを使用してそれを回避し、サーバーキーをキャッシュに保存するかどうかを尋ねるプロンプトが表示されたら[はい]をクリックしました。cloneコマンドをもう一度実行すると、うまくいきました!


21
これで直接修正することはできませんでしたが、問題がOpenSSHの代わりにssh認証にPuttyを使用するGitBashに関連していることに気づきました。GIT_SSHシステム変数を削除してGitBashをリセットすると、すべて正常に動作します。ありがとう!
MarathonStudios

2
キャッシュputtygithubキーを追加するための使用は私にとってはうまく
オーク

4
これは、Win 7ではコマンドコンソールを使用して動作しました。これが回避策ではなく、なぜ起こったのか誰かに教えてもらえれば幸いです。
soulsabr 2016

1
上記の解決策を実行する方法を誰かに教えてもらえますか
Shreyan Mehta

2
@Shreyan Mehtaは、パテを開いて、ホスト名paste git@github.com(または使用しているホスト)で貼り付けます。SSHの接続タイプを選択してください。ポート番号は22でなければなりません。これを起動する前に、ページェントにsshキーがロードされていることを確認してください。
Mr.Invisible

110
  1. オープンパテ
  2. ホスト名を入力します(などbitbucket.org
  3. 開くをクリックします
  4. ホストキーをキャッシュするには、ポップアップで[はい]をクリックします
  5. パテを閉じる

私も同じ問題を抱えていました。gitからの出力を見ると、gitがホストキーのキャッシュに失敗しているようです(おそらくバグ)。したがって、PuTTY GUIを使用して実行する必要があります。
2016

私はすべての手順を試してみましたが、私はどちらか「Y」または「n」を選択したときに何もGitのバッシュは何もしませんhappedsん
testsingh

手順2で正しいホスト名を入力しましたか?Git Bashを再起動してみましたか?
2016

1
これは、受け入れられた回答とどう違うのですか?
zb226 2017

1
手順を示すため、私はこの回答に賛成票を投じました。受け入れられた回答のように、それが回避策である(接続するすべてのSSHサーバーに対してこれを繰り返す必要がある)のが好きではありません。
ShooShoSha 2017年

26

powershellからこれを行うには、Powershellウィンドウを開き、次の場所に貼り付けます。

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@bitbucket.org

またはPuTTYスタンドアロンバージョン:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@bitbucket.org

また、パテは既知のホストをレジストリキーの下に保存することも知っておく価値があります

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

上記をショートカットするには、以下を.regファイルに入れて実行します。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

putty-hosts.reg要旨


2
PLINKのこの側面についても、以前の質問と回答を参照してください。serverfault.com/questions/420526/...
ヨシップ・ロダン

2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
方位角

リモートが22以外のポートで動作する場合は、-P <port>引数を渡してポートでplinkを実行する必要があります。
PitaJ

20

私はそれをplinkを直接実行することによってそれを機能させることができました、ページェントが実行された後、plinkコマンドを直接使用してください- plink.exe -agent -v git@github.comその後、このgitがハングすることなく動作します。


3
素敵な解決策!これは答えとしてマークされているはずです
ZenithS

これが最良の答えです。
ブライアンレイシー

5

この問題を回避するには、plink with -batchoption を使用するようにGitBashを構成しました。このオプションはすべてのプロンプトを無効にします-plinkはハングすることなく終了し、キーフィンガープリントをキャッシュに追加しません。

-batchGitBashによって実行されるplinkコマンドにパラメーターを追加するには、git構成オプションを設定できます。

git config --global core.sshCommand "plink -batch"

または、GIT_SSH_COMMAND環境変数を設定します。

不明なホストからリポジトリを複製したときの出力は、次のようになります。

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

このメッセージの後に、次のコマンドでキャッシュするキーを追加できます。

echo y | plink git@bitbucket.org

備考:plinkが内にあるかどうかを確認してくださいPATH。または、GitBash構成オプションでUNIXのようなパスを使用します。例:

/c/Program\ Files/PuTTY/plink.exe -batch

1
こんにちは私はこのメッセージを受け取ります:致命的なエラー:切断:サポートされている認証方法はありません(送信されたサーバー:
publickey

4

他の回答に記載されている回避策を実行した後でも、次のようなエラーが発生する場合があります。

致命的なエラー:切断:サポートされている認証方法はありません(送信されたサーバー:publickey)

両方の問題を一度に解決するには、次のコードを~/.profileファイルに追加して、git bashをPuTTYの代わりにSSHを使用するように変更します(C:\Users\<Username>\.profile)。このファイルがまだない場合は、この行で新しいファイルを作成します。

GIT_SSH="/usr/bin/ssh.exe"

次に、新しいgit bashウィンドウを開いて、git cloneまたはをgit pull再試行してください。

SSH鍵がない場合は、作成する必要があることに注意してください。これを行うには、Bitbucketサイトの指示に従ってください。

関連情報については、このSOの質問を参照しください。


1

git bashシェルで、GIT_SSHの存在を確認します。存在
echo $GIT<tab><tab>
していてputtyに設定されている場合は、次のコマンドを 実行し
unset GIT_SSH
ます。おそらく、これをgit bash起動スクリプトの1つに挿入します。
これは普遍的な解決策ではありません。それは私たちの特定のケースで機能しました。


「git bash起動スクリプト」は何/どこにありますか?私は本物のLinuxにのみ精通しています。
ジェフK

複数の起動スクリプトがあります。一部は/ etcディレクトリにあります。他の人はあなたのホームディレクトリにいることができます。どの起動スクリプトが実行されるかは、シェルのコマンドラインオプション(インタラクティブvsログイン)によって異なります。これらは、シェルが実行されているOSに関係なく関連しています。
Richard Jessop

Windowsには「/ etc」ディレクトリがありません。
ジェフK

Windowsで動作するBashシェルは動作します。それらは通常、シェルのベース(またはインストール)ディレクトリから離れた場所にマップされます。git bashとCygwin bashを見てください。これらは、Linuxシステムのシェルのように見え、動作するシェルであることを覚えておいてください。
Richard Jessop

0

少しばかげているように思えますが、上記のすべてを試した後、デフォルトのオプションを使用してGit Bashを再インストールすることにしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.