463 Stimmen

Warum empfiehlt GitHub HTTPS gegenüber SSH?

Auf der GitHub-Seite gibt es einen Link...

https://help.github.com/articles/generating-ssh-keys

... und da steht...

Wenn Sie sich entschieden haben, die Empfehlung nicht zu verwenden SSH-Schlüssel verwenden, um eine sichere Verbindung zwischen Ihrem Computer und GitHub herzustellen. Die folgenden Schritte führen Sie durch die Erstellung eines SSH Schlüssels und das anschließende Hinzufügen des öffentlichen Schlüssels zu Ihrem GitHub-Konto.

Warum ist HTTPS die empfohlene Methode? Gibt es bei der SSH-Methode eine Sicherheitslücke oder ist sie langsamer? Ich habe einen SSH-Schlüssel erstellt, würde das die Sicherheitsbedenken mindern?

289voto

k107 Punkte 14873

GitHub hat seine Empfehlung mehrmals geändert ( Beispiel ).

Offenbar wird derzeit HTTPS empfohlen, weil es in den meisten Netzen und Plattformen am einfachsten einzurichten ist und von Nutzern verwendet werden kann, die mit all dem noch nicht vertraut sind.

Es gibt keinen inhärenten Fehler in SSH (wenn es einen gäbe, würden sie es deaktivieren) - in den unten stehenden Links werden Sie sehen, dass sie immer noch Details über SSH-Verbindungen zur Verfügung stellen:

  1. Die Wahrscheinlichkeit, dass HTTPS von einer Firewall blockiert wird, ist geringer.

    https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls

    En https:// Klon-URLs sind für alle Repositories verfügbar, unabhängig von der Sichtbarkeit. https:// Klon-URLs funktionieren auch, wenn Sie sich hinter einer Firewall oder einem Proxy befinden.

  2. Eine HTTPS-Verbindung ermöglicht credential.helper um Ihr Passwort zwischenzuspeichern.

    https://docs.github.com/en/get-started/quickstart/set-up-git#connecting-over-https-recommended

    Wenn Sie mit HTTPS klonen, können Sie Ihre GitHub-Anmeldeinformationen in Git mithilfe eines Credential Helper zwischenspeichern. Für weitere Informationen, siehe " Klonen mit HTTPS-URLs " und " Zwischenspeichern Ihrer GitHub-Anmeldedaten in Git. "

113voto

practicalli-john Punkte 1756

Ich nehme an, dass HTTPS von GitHub aus mehreren Gründen empfohlen wird

  1. Es ist einfacher, von überall auf ein Repository zuzugreifen, da Sie nur Ihre Kontodaten benötigen (keine SSH-Schlüssel erforderlich), um in das Repository zu schreiben.

  2. HTTPS ist ein Port, der in allen Firewalls offen ist. SSH ist nicht immer als Port für die Kommunikation mit externen Netzwerken geöffnet

Ein GitHub-Repository ist daher über HTTPS universeller zugänglich als über SSH.

Meiner Meinung nach sind SSH-Schlüssel den kleinen Mehraufwand wert, der mit ihrer Erstellung verbunden ist

  1. SSH-Schlüssel bieten keinen Zugriff auf Ihr GitHub-Konto, sodass Ihr Konto nicht gekapert werden kann, wenn Ihr Schlüssel gestohlen wird.

  2. Die Verwendung einer starken Keyphrase mit Ihrem SSH-Schlüssel schränkt jeden Missbrauch ein, selbst wenn Ihr Schlüssel gestohlen wird (nachdem Sie zuerst den Zugriffsschutz auf Ihr Computerkonto aufgebrochen haben)

Wenn Ihre GitHub-Kontodaten (Benutzername/Kennwort) gestohlen werden, kann Ihr GitHub-Kennwort geändert werden, um Sie für den Zugriff zu sperren, und alle gemeinsam genutzten Repositories können schnell gelöscht werden.

Wenn ein privater Schlüssel gestohlen wird, kann jemand einen Force Push eines leeren Repositorys durchführen und den gesamten Änderungsverlauf für jedes Repository, das Ihnen gehört, löschen, aber nichts in Ihrem GitHub-Konto ändern. Wenn Sie Zugang zu Ihrem GitHub-Konto haben, ist es viel einfacher, sich von diesem Verstoß zu erholen.

Ich bevorzuge SSH mit einem passphrasengeschützten Schlüssel. Ich habe für jeden Computer einen anderen SSH-Schlüssel. Wenn also der Computer gestohlen oder der Schlüssel kompromittiert wird, kann ich mich schnell bei GitHub anmelden und den Schlüssel löschen, um unerwünschten Zugriff zu verhindern.

SSH kann über HTTPS getunnelt werden, wenn das Netzwerk, in dem Sie sich befinden, den SSH-Port blockiert.

https://help.github.com/articles/using-ssh-over-the-https-port/

Wenn Sie HTTPS verwenden, würde ich empfehlen, eine Zwei-Faktor-Authentifizierung hinzuzufügen, um Ihr Konto und Ihre Repositories zu schützen.

Wenn Sie HTTPS mit einem Tool (z. B. einem Editor) verwenden, sollten Sie ein Entwickler-Token von Ihrem GitHub-Konto verwenden, anstatt Benutzername und Kennwort in der Konfiguration dieses Tools zu cachen. Ein Token würde einen Teil des potenziellen Risikos bei der Verwendung von HTTPS mindern, da Token für sehr spezifische Zugriffsrechte konfiguriert werden können und leicht widerrufen werden können, wenn das Token kompromittiert wird.

18voto

mja Punkte 1095

Ermöglichung von SSH-Verbindungen über HTTPS, wenn diese von der Firewall blockiert werden

Testen Sie, ob SSH über den HTTPS-Port möglich ist, indem Sie diesen SSH-Befehl ausführen:

$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

Wenn das funktioniert, großartig! Wenn nicht, müssen Sie möglicherweise unsere Anleitung zur Fehlersuche .

Wenn Sie in der Lage sind, SSH in git@ssh.github.com über den Hafen 443 können Sie Ihre SSH-Einstellungen überschreiben, so dass jede Verbindung zu GitHub über diesen Server und Port läuft.

Um dies in Ihrer ssh-Konfiguration einzustellen, bearbeiten Sie die Datei unter ~/.ssh/config und fügen Sie diesen Abschnitt hinzu:

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

Sie können testen, ob dies funktioniert, indem Sie sich noch einmal mit GitHub verbinden:

$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

De Authentifizierung bei GitHub / Verwendung von SSH über den HTTPS-Port

17voto

Sid Sarasvati Punkte 771

Entweder Sie zitieren falsch oder github hat unterschiedliche Empfehlungen auf verschiedenen Seiten oder sie können mit der Zeit gelernt und ihre reco aktualisiert.

Wir empfehlen dringend die Verwendung einer SSH-Verbindung für die Interaktion mit GitHub. SSH-Schlüssel sind eine Möglichkeit, vertrauenswürdige Computer zu identifizieren, ohne Passwörter zu verwenden. Die folgenden Schritte führen Sie durch die Erstellung eines SSH-Schlüssels und das anschließende Hinzufügen des öffentlichen Schlüssels zu Ihrem GitHub-Konto.

https://help.github.com/articles/generating-ssh-keys

12voto

Mark Tye Punkte 1633

Siehe auch: die offizielle Welche Remote-URL sollte ich verwenden? Antwort auf help.github.com.

EDIT:

Es scheint, dass es nicht mehr notwendig ist, Schreibzugriff auf ein öffentliches Repository zu haben, um eine SSH-URL zu verwenden, wodurch meine ursprüngliche Erklärung hinfällig wird.

ORIGINAL:

Anscheinend ist der Hauptgrund für die Bevorzugung von HTTPS-URLs, dass SSH-URLs nicht mit einem öffentlichen Repo funktionieren, wenn man keinen Schreibzugriff auf dieses Repo hat.

Die Verwendung von SSH-URLs wird jedoch für die Bereitstellung auf Produktionsservern empfohlen - vermutlich geht es hier um Dienste wie Heroku.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X