git://-Protokoll vom Unternehmen blockiert, wie kann ich das umgehen?

Lesezeit: 9 Minuten

Versuche so etwas wie git clone git://github.com/ry/node.git wird nicht funktionieren, es führt zu:

Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

Das Klonen über HTTP funktioniert jedoch einwandfrei. Bisher habe ich festgestellt, dass es sich um ein Problem mit dem Protokoll handelt, aber ich versuche, cloud9 zu installieren, für das der Befehl erforderlich ist

git submodule update --init --recursive

der versucht, das git://-Protokoll zu verwenden und fehlschlägt. Gibt es eine Möglichkeit zu ändern, wie dieser Befehl funktioniert oder so?

  • hast du einen SSH-Zugang? oder nur HTTP?

    – Pablo Santa Cruz

    3. Februar 2011 um 20:51 Uhr

  • Was ist mit Leuten, die versuchen, Git-Fragen zu schließen? Laut FAQ umfasst der Anwendungsbereich von SO “Software-Tools, die üblicherweise von Programmierern verwendet werden”. Hier gibt es über sechstausend Git-Fragen. Sie gehören hierher.

    – Kaskabel

    3. Februar 2011 um 20:55 Uhr

  • Sie können Git dazu bringen, automatisch https:// zu verwenden, wenn es eine git://-URL sieht: git config --global url.https://.insteadOf git://

    – WildlyInaccurate

    2. Januar 2014 um 14:43 Uhr

git Protokoll vom Unternehmen blockiert wie kann ich das umgehen
Nathan S. Watson-Haigh

Wenn dies ein Problem mit Ihrer Firewall ist, die den git: protocol port (9418) blockiert, dann sollten Sie eine dauerhaftere Änderung vornehmen, damit Sie nicht daran denken müssen, von anderen Posts vorgeschlagene Befehle für jedes Git-Repo auszugeben.

Die folgende Lösung funktioniert auch nur für Submodule, die möglicherweise auch das git: -Protokoll verwenden.

Da die Git-Nachricht nicht wirklich sofort auf die Firewall zeigt, die Port 9418 blockiert, versuchen wir, dies als das eigentliche Problem zu diagnostizieren.

Diagnose des Problems

Verweise: https://superuser.com/q/621870/203918 und https://unix.stackexchange.com/q/11756/57414

Es gibt mehrere Tools, mit denen wir feststellen können, ob die Firewall unser Problem verursacht – verwenden Sie das, was auf Ihrem System installiert ist.

# 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

OK, jetzt haben wir festgestellt, dass unser Git-Port von einer Firewall blockiert wird. Was können wir dagegen tun? Weiter lesen 🙂

Grundlegendes URL-Umschreiben

Git bietet eine Möglichkeit, URLs umzuschreiben git config. Setzen Sie einfach den folgenden Befehl ab:

git config --global url."https://".insteadOf git://

Jetzt führen alle Git-Befehle wie von Zauberhand eine Ersetzung von durch git:// zu https://

Welche Änderungen hat dieser Befehl vorgenommen?

Sehen Sie sich Ihre globale Konfiguration an mit:

git config --list

In der Ausgabe sehen Sie die folgende Zeile:

url.https://.insteadof=git://

Sie können sehen, wie dies in der Datei aussieht, indem Sie einen Blick darauf werfen ~/.gitconfig wo Sie nun sehen sollten, dass die folgenden zwei Zeilen hinzugefügt wurden:

[url "https://"]
    insteadOf = git://

Willst du mehr Kontrolle?

Verwenden Sie einfach eine vollständigere/spezifischere URL in der Ersetzung. Damit GitHub-URLs beispielsweise nur https:// anstelle von git:// verwenden, könnten Sie Folgendes verwenden:

git config --global url."https://github".insteadOf git://github

Sie können diesen Befehl mehrmals mit verschiedenen Ersetzungen ausführen. Falls jedoch eine URL mit mehreren Ersetzungen übereinstimmt, „gewinnt“ die längste Übereinstimmung. Pro URL wird nur eine einzige Ersetzung vorgenommen.

Systemweite Änderungen für Sysadmins

Wenn Sie ein Linux-Systemadministrator sind und nicht möchten, dass Ihre Benutzer die oben genannten Probleme durchlaufen müssen, können Sie eine schnelle systemweite Git-Konfigurationsänderung vornehmen.

Bearbeiten Sie einfach die folgenden Inhalte oder fügen Sie sie hinzu /etc/gitconfig und voila, Ihre Benutzer müssen sich um keines der oben genannten Dinge kümmern:

[url "https://"]
    insteadOf = git://

  • Funktioniert super! Kein Suchen und Ersetzen mehr. Build-Skripte funktionieren jetzt einfach. Diese Antwort hat mir viel Zeit gespart. Danke!

    – Jeremy Bell

    1. Mai 2013 um 13:05 Uhr

  • Für etwas mehr Kontrolle darüber, welche URL konvertiert wird, können Sie auch einen Teil der URL angeben. Beispiel: Ich habe einen privaten internen Server „myserver.lan.example.com“, der Git-Repos über SSH (gitlab), aber nicht HTTPS hostet. Deshalb habe ich Muss Verwenden Sie SSH, wenn ich die praktische Schlüsselauthentifizierung nutzen möchte. Ich verwende auch Repos von Github, aber meine Unternehmensfirewall blockiert SSH zu Github. Ich möchte nicht einfach alle Instanzen von „git://“ durch „https://“ ersetzen, da dies gitlab beschädigen würde. Die Lösung ist git config --global url."https://github".insteadOf git://github.

    – Tonzermk1

    15. Juli 2013 um 19:08 Uhr


  • Dies funktioniert nicht in Windows 8. Ich habe festgestellt, dass der Befehl den Wert nicht auf der Festplatte festlegt. Für eine –list-Operation wird er gedruckt. Aber wenn Sie zur Datei /etc/gitconfig gehen, wird es die Änderung nicht geben. Sie müssen sich bei der Bash-Shell anmelden und die Datei manuell bearbeiten, dann versuchen Sie die Bower-Installation …. dann wird es funktionieren.

    – Sunnychayen

    18. August 2014 um 13:49 Uhr


  • Ich habe git innerhalb von cygwin ausgeführt und die einzige Möglichkeit, dies zum Laufen zu bringen, bestand darin, die „systemweiten Änderungen für Sysadmins“ vorzunehmen und die Änderungen „url.https://.anstatt=git://“ hinzuzufügen die Datei „C:\Programme (x86)\Git\etc\gitconfig“. Danke für den Tipp!

    – Craig

    3. Juli 2015 um 6:50 Uhr

  • Um diese Änderung rückgängig zu machen, kann man verwenden git config --global --unset url."https://".insteadOf

    – DJSKINNER

    25. August 2015 um 10:37 Uhr

Github bietet auch http(s)-Zugriff, der mit viel geringerer Wahrscheinlichkeit von Ihrem Unternehmen blockiert wird. Um dem Submodul mitzuteilen, dass es das verwenden soll, können Sie Folgendes tun:

git submodule init
git config submodule.<name>.url https://github.com/...
git submodule update

Genau aus diesem Grund sind init und update separate Befehle – Sie können initialisieren, Speicherorte anpassen und dann aktualisieren. update --init ist nur eine Abkürzung, wenn Sie keine URLs anpassen müssen.

Für alle anderen, denen dies passiert, könnten Sie natürlich auch eine ssh-URL verwenden (wenn Ihr Unternehmen git: //, aber nicht ssh blockiert), aber in diesem Fall hat das OP vermutlich keinen SSH-Zugriff auf das Remote-Repo.

  • Klingt so, als würde dies wahrscheinlich für mich funktionieren, obwohl es so aussieht, als müsste ich jeden einzeln durchgehen. Hat gemacht github.com/ajaxorg/cloud9 besonders, wenn es darauf ankommt.

    – Robert

    3. Februar 2011 um 21:13 Uhr

  • @Robert: Wenn es viele gibt, können Sie die Konfigurationsdatei direkt bearbeiten und suchen und ersetzen: sed -i 's@git://github@https://github@' .git/config.

    – Kaskabel

    4. Februar 2011 um 0:07 Uhr

  • Hmm, aus irgendeinem Grund sagen sie http:// in der Datei, aber der Befehl versucht immer noch git://

    – Robert

    4. Februar 2011 um 23:17 Uhr

  • Ich habe das gleiche Problem wie im OP beschrieben, aber wenn ich diese Lösung verwende, schlägt sie immer noch fehl, aber mit einem etwas anderen Fehler. Es heißt “Fehler: Beim Zugriff auf https: // … schwerwiegend: HTTP-Anforderung fehlgeschlagen”. Hat jemand einen Einblick darauf? Blockiert mein Host etwas? Meine anderen Submodule werden problemlos aktualisiert, ich habe nur Probleme mit einem.

    – Jo Sprague

    21. September 2012 um 15:11 Uhr

Eine andere Option, bei der die git-Konfiguration nicht berührt werden muss, besteht darin, die ssh-Einstellungen so zu ändern, dass Port 443 anstelle des regulären Ports 22 verwendet wird.

Referenz: Verwendung von SSH über den HTTPS-Port

Aus diesem Artikel:

edit the file at ~/.ssh/config, and add this section:

Host github.com
   Hostname ssh.github.com   
   Port 443

Danach konnte ich Git-Push erfolgreich an Github senden. Zu Hause können Sie die ssh-Konfiguration auf den ursprünglichen Zustand zurücksetzen, wenn Sie möchten.

git Protokoll vom Unternehmen blockiert wie kann ich das umgehen
KM Rakibul Islam

Ich hatte auch eine Zeit lang das gleiche Problem. Dann habe ich versucht, die Git-Konfiguration mit dem vorgeschlagenen Befehl zu ändern:

git config --global url."https://".insteadOf git://

was bei mir leider nicht geklappt hat. Ich hatte immer noch das gleiche Problem!

Was mein Problem endlich gelöst hat, ist, dass ich die Remote-URL meines Repositorys mit dem folgenden Befehl wieder zurückgesetzt habe:

git remote set-url origin https://github.com/<my_user_name>/<my_repo_name>.git

was früher so war:

git remote set-url origin [email protected]:<my_user_name>/<my_repo_name>.git

Nach dem Festlegen der Remote-URL mit https:// anstatt [email protected] das problem wurde bei mir gelöst.

1646260090 465 git Protokoll vom Unternehmen blockiert wie kann ich das umgehen
Jiller

Wenn Sie die obige Antwort von Nathan erweitern, können Sie auch das ssh-Protokoll ausprobieren, wenn Ihre Unternehmens-Firewall https stört. In meinem Fall blockierte die Firewall das Git-Protokoll, stellte SSL-Zertifikate für https neu aus und dies brach für mich zusammen, selbst wenn die Option strict-ssl deaktiviert war. Sie können eine ähnliche URL-Umschreibung für ssh durchführen und einen ssh-Schlüssel/ein ssh-Paar erstellen wie auf github beschrieben.

 git config --global url."ssh://[email protected]".insteadOf git://github.com

Sie müssten auch den ssh-Agent für Ihre Git-Installation aktivieren.

1646260090 944 git Protokoll vom Unternehmen blockiert wie kann ich das umgehen
fmo

Da sich die GIT-Adresse für den Node-Server geändert hat, müssen Sie jetzt Folgendes eingeben:

git-Klon https://github.com/joyent/node

viel Glück

1646260090 978 git Protokoll vom Unternehmen blockiert wie kann ich das umgehen
Menelaos

Einführung

Ich werde hier meinen eigenen Ansatz hinzufügen ( Dies ist nicht erforderlich, wenn Sie über ein öffentlich zugängliches Git-Repository verfügen, das https unterstützt).

Ich arbeite in einem Unternehmen, in dem das Git-Repository nur innerhalb des Unternehmens zugänglich ist. Aber ich arbeite auch von zu Hause aus.

Wie pushe ich von zu Hause aus auf das Unternehmens-Repository?

Ich habe ein Repository mit einem Ordner auf meinem Google-Laufwerk erstellt. Mit Ausnahme von git und https können Sie Repositories als Pfade einschließen.

Geben Sie hier die Bildbeschreibung ein

Anstatt also zum Ursprung zu pushen, pushe ich zu “gDrive”. Dadurch wird der Ordner von meiner Heimarbeitsstation mit Google Drive synchronisiert, und dann zieht mein Arbeitscomputer die Änderungen. Da Dateien im “.git”-Verzeichnis manchmal nicht synchronisiert werden, benenne ich den Ordner außerdem vorübergehend von zB “trunk” in “trunk2” um. Dadurch müssen sowohl Heim- als auch Arbeitscomputer zu 100 % mit Google Drive synchronisiert werden.

Ich melde mich dann entweder über checkpoint-vpn remote (oder teamviewer) bei meinem Arbeitscomputer an und pushe meine Updates in das Arbeits-Git-Repository.

Darüber hinaus würde der Prozess umgekehrt funktionieren, um in ein Git-Repository außerhalb des blockierten Unternehmens zu pushen.

  1. Pushen Sie vom Workstation-Git-Repo in den Ordner in Google Drive.
  2. Erzwingen Sie eine 100-prozentige Synchronisierung, indem Sie das Projektverzeichnis in gDrive vorübergehend umbenennen.
  3. Greifen Sie über eine Art Remote- und Push-Änderungen auf den Heimcomputer zu.

916780cookie-checkgit://-Protokoll vom Unternehmen blockiert, wie kann ich das umgehen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy