web-dev-qa-db-ja.com

エラー:gnutls_handshake()はGITリポジトリに失敗しました

Gitリポジトリを複製しようとすると、次のエラーが表示されます。 RSA公開キーも適切に構成されています。

$ git clone https://github.com/blah/blah.git
Initialized empty Git repository in /home/arun/.git/
error: gnutls_handshake() failed: A TLS packet with unexpected length was
       received. while accessing https://github.com/blah/blah.git/info/refs

fatal: HTTP request failed
19
Arun Jayapal

GnuTLまたはpycurlのバグ に使用できます

Pycurl_7.19.0-4ubuntu3の新しいメソッドは次のとおりです。

Sudo apt-get install build-essential fakeroot dpkg-dev
mkdir ~/python-pycurl-openssl
cd ~/python-pycurl-openssl
Sudo apt-get source python-pycurl
Sudo apt-get build-dep python-pycurl
Sudo apt-get install libcurl4-openssl-dev
Sudo dpkg-source -x pycurl_7.19.0-4ubuntu3.dsc
cd pycurl-7.19.0
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim debian/patches/10_setup.py.dpatch
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim setup.py
# replace all gnutls into openssl in the following file
Sudo vim debian/control
Sudo dpkg-buildpackage -rfakeroot -b
Sudo dpkg -i ../python-pycurl_7.19.0-4ubuntu3_AMD64.deb
8
VonC

私はこの問題を抱えていましたが、解決策を見つけるのに時間がかかりました。私はどこかでパッケージを見逃していると考え続けました。すでに最新バージョンを使用していたため、Gitを再コンパイルしたくはありませんでした。問題はGit自体ではないと確信していました。

私の問題は.gitconfigファイルでした。この問題は、長年にわたって何度もアップグレードされた古いLinuxサーバーでのみ発生しました。ある時点で、何らかの理由で思い出せませんが、sslVersion = sslv3ファイルで.gitconfigを明示的に指定しました。

SSL V3はセキュリティ上の問題により非推奨になり、ほとんどの人は代わりにTLSを使用する必要があることを知っているので、私はそれを見たときに電球が点灯しました。たとえば、RFC 7568を参照してください https://tools.ietf.org/html/rfc7568

したがって、私の修正には、問題のsslVersion = sslv3行を~/.gitconfigファイルから削除するか、これを変更することが含まれます。

[httpd] 
    sslVersion = sslv3

これに:

[httpd]
    sslVersion = tlsv1.2

行を削除し、Git/libcurlに暗号化をネゴシエートさせるのが最良の選択のように思えました。TLSv1.3が機能しており、今後この問題に遭遇することはないからです!

6
m0j0

私の場合、pycurlを使用していないようですので、上記の解決策はうまくいきませんでした。何がDID=.

手順はこちらです:

https://askubuntu.com/questions/186847/error-gnutls-handshake-falied

ほとんどの場所で「git」の代わりに「git-core」を使用しました。dsc(パッケージ情報ファイル?)はgit-core_1.7.0.4-1ubuntu0.2.dscになり、.debパッケージはgit-core_1.7.0.4-1ubuntu0.2_i386.deb.

4
2NinerRomeo

自分のユーザーが十分な権限を持っていないディレクトリからSudo git fetchを試しても同じ問題が発生しました。リポジトリを/tmpに移動し、作業を続けました。

再起動後に/tmpが消去されることを忘れないでください。

1
simno

私の場合、@ Rickと@ m0j0のソリューションを混合して、

最初にこれらのコマンドを実行します:

git config --global http.sslVerify false
git config --global http.sslVerify true

追加または変更後~/.gitconfig

nano ~/.gitconfig

これを設定します。

[httpd] 
    sslVersion = sslv3
0
onalbi

私にとっては、SSL証明書が自己署名されていることになりました。これを試してみてください

git config --global http.sslVerify false

0
Rick