Bu, güvenlik duvarınızın git: protokol bağlantı noktasını (9418) engellemesiyle ilgili bir sorunsa, daha kalıcı bir değişiklik yapmanız gerekir, böylece her git repo için diğer gönderiler tarafından önerilen komutları vermeyi hatırlamanız gerekmez.
Aşağıdaki çözüm sadece git: protokolünü kullanıyor olabilecek alt modüller için de kullanılabilir.
Git mesajı hemen güvenlik duvarı engelleme bağlantı noktası 9418'i göstermediğinden, bunu gerçek sorun olarak teşhis etmeye çalışalım.
Sorunu Teşhis Etme
Referanslar: https://superuser.com/q/621870/203918 ve https://unix.stackexchange.com/q/11756/57414
Sorunumuza neden olan güvenlik duvarının sisteminizde yüklü olanı kullanın olup olmadığını belirlemek için kullanabileceğimiz birkaç araç vardır.
# Using nmap
# A state of "filtered" against port 9418 (git) means
# that traffic is being filtered by a firewall
$ nmap github.com -p http,git
Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT STATE SERVICE
80/tcp open http
9418/tcp filtered git
# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1
# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl http://github.com:9418
curl: (7) couldn't connect to host
Tamam, şimdi git bağlantı noktamızın bir güvenlik duvarı tarafından engellendiğini belirledik, bu konuda ne yapabiliriz? Okumaya devam etmek :)
Temel URL Yeniden Yazma
Git, URL'leri kullanarak yeniden yazmak için bir yol sağlar git config
. Aşağıdaki komutu vermeniz yeterlidir:
git config --global url."https://".insteadOf git://
Şimdi, büyü gibi, tüm git komutları bir ikame gerçekleştirecek git://
içinhttps://
Bu Komut Hangi Değişiklikleri Yaptı?
Şunları kullanarak küresel yapılandırmanıza göz atın:
git config --list
Çıktıda aşağıdaki satırı göreceksiniz:
url.https://.insteadof=git://
~/.gitconfig
Aşağıdaki iki satırın eklendiğini görmeniz gereken yere bir göz atarak bunun dosyada nasıl göründüğünü görebilirsiniz:
[url "https://"]
insteadOf = git://
Daha Fazla Kontrol İster misiniz?
Değiştirme işleminde daha eksiksiz / spesifik bir URL kullanmanız yeterlidir. Örneğin, GitHub URL'lerinin git: // yerine yalnızca https: // kullanmasını sağlamak için şöyle bir şey kullanabilirsiniz:
git config --global url."https://github".insteadOf git://github
Farklı komutlar kullanarak bu komutu birden çok kez çalıştırabilirsiniz. Ancak, bir URL'nin birden fazla değiştirmeyle eşleşmesi durumunda en uzun eşleşme "kazanır". URL başına yalnızca tek bir değişiklik yapılır.
Sistem yöneticileri için sistem genelinde değişiklikler
Bir Linux Sysadmin iseniz ve kullanıcılarınızın yukarıdaki acılardan geçmesini istemiyorsanız, sistem genelinde hızlı bir yapılandırma değişikliği yapabilirsiniz.
Aşağıdaki içerikleri düzenleyin veya ekleyin /etc/gitconfig
ve kullanıcılarınızın yukarıdakilerden herhangi biri hakkında endişelenmesine gerek yoktur:
[url "https://"]
insteadOf = git://