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
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
私はこの問題を抱えていましたが、解決策を見つけるのに時間がかかりました。私はどこかでパッケージを見逃していると考え続けました。すでに最新バージョンを使用していたため、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が機能しており、今後この問題に遭遇することはないからです!
私の場合、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.
自分のユーザーが十分な権限を持っていないディレクトリからSudo git fetch
を試しても同じ問題が発生しました。リポジトリを/tmp
に移動し、作業を続けました。
再起動後に/tmp
が消去されることを忘れないでください。
私の場合、@ Rickと@ m0j0のソリューションを混合して、
最初にこれらのコマンドを実行します:
git config --global http.sslVerify false
git config --global http.sslVerify true
追加または変更後~/.gitconfig
nano ~/.gitconfig
これを設定します。
[httpd]
sslVersion = sslv3
私にとっては、SSL証明書が自己署名されていることになりました。これを試してみてください
git config --global http.sslVerify false