Skip to main content

Verwenden von Pushschutz über die Befehlszeile

Erfahren Sie, wie Sie die Blockierung Ihres Pushs von der Befehlszeile an GitHub aufheben können, wenn secret scanning in Ihren Änderungen ein Geheimnis erkennt.

Wer kann dieses Feature verwenden?

Benutzer*innen mit Schreibzugriff

Info zu Pushschutz über die Befehlszeile

Der Push-Schutz verhindert, dass Sie versehentlich Geheimnisse an ein Repository übermitteln, indem Push-Nachrichten mit unterstützten Geheimnissen blockiert werden.

Wenn Sie ein unterstütztes Geheimnis von der Befehlszeile an ein Repository mit Pushschutz pushen möchten, blockiert GitHub den Push.

Sie sollten eine der folgenden Aktionen ausführen:

In der Befehlszeile werden jeweils bis zu fünf erkannte Geheimnisse angezeigt. Wenn ein bestimmtes Geheimnis schon im Repository erkannt wurde und bereits eine Warnung existiert, blockiert GitHub das Geheimnis nicht.

Wenn du bestätigst, dass ein Geheimnis echt ist und du es später beheben möchtest, solltest du das Geheimnis so schnell wie möglich beheben. Du kannst beispielsweise das Geheimnis widerrufen und aus dem Commitverlauf des Repositorys entfernen. Falls tatsächliche Geheimnisse offengelegt wurden, müssen diese widerrufen werden, um nicht autorisierten Zugriff zu verhindern. Du kannst das Geheimnis auch rotieren, bevor du es widerrufst. Weitere Informationen findest du unter Entfernen vertraulicher Daten aus einem Repository.

Note

  • Wenn deine Git-Konfiguration das Pushen an mehrere Branches und nicht nur an den aktuellen Branch unterstützt, wird dein Push möglicherweise blockiert, weil zusätzliche und unbeabsichtigte Verweise gepusht werden. Weitere Informationen findest du unter push.default-Optionen in der GitHub-Dokumentation.
  • Wenn für secret scanning bei einem Push ein Timeout auftritt, scannt GitHub die Commits nach dem Pushen trotzdem auf Geheimnisse.

Auflösen eines blockierten Pushvorgangs

Um einen blockierten Push aufzulösen, müssen Sie das Geheimnis aus allen Commits entfernen, in denen er angezeigt wird.

Note

Informationen zum Auflösen eines blockierten Commits in der Benutzeroberfläche von GitHub finden Sie unter „Arbeiten mit Pushschutz in der GitHub-Benutzeroberfläche“.

Entfernen eines Geheimnisses, das durch den letzten Commit in deinem Branch eingeführt wurde

Wenn das blockierte Geheimnisse mit dem letzten Commit in deinen Branch gelangt ist, befolge diese Schritte:

  1. Entferne das Geheimnis aus deinem Code.
  2. Um die Änderungen zu committen, führe git commit --amend aus. Dadurch wird der ursprüngliche Commit aktualisiert, der das Geheimnis eingeführt hat, anstatt einen neuen Commit zu erstellen.
  3. Pushe die Änderungen mit git push.

Entfernen eines Geheimnisses, das von einem früheren Commit in deinem Branch eingeführt wurde

Du kannst das Geheimnis auch entfernen, wenn es in einem früheren Commit im Git-Verlauf vorkommt. Dazu musst du ermitteln, welcher Commit das Geheimnis zuerst eingeführt hat und den Verlauf der Commits durch die Ausführung eines interaktiven Rebase ändern.

  1. Untersuche die Fehlermeldung, die angezeigt wurde, als du versucht hast, deinen Branch zu pushen, und die alle Commits auflistet, die das Geheimnis enthalten.

    remote:   —— GitHub Personal Access Token ——————————————————————
    remote:    locations:
    remote:      - commit: 8728dbe67
    remote:        path: README.md:4
    remote:      - commit: 03d69e5d3
    remote:        path: README.md:4
    remote:      - commit: 8053f7b27
    remote:        path: README.md:4
    
  2. Führe als nächstes git log aus, um einen vollständigen Verlauf aller Commits in deinem Branch mit den entsprechenden Zeitstempeln anzuzeigen.

    test-repo (test-branch)]$ git log
    commit 8053f7b27 (HEAD -> main)
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 13:03:37 2024 +0100
    
      my fourth commit message
    
    commit 03d69e5d3
    Author: Octocat <1000+octocat@users.noreply.github.com>
    Date:   Tue Jan 30 13:02:59 2024 +0100
    
      my third commit message
    
    commit 8728dbe67
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 13:01:36 2024 +0100
    
      my second commit message
    
    commit 6057cbe51
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 12:58:24 2024 +0100
    
      my first commit message
    
    
  3. Focusing only on the commits that contain the secret, use the output of git log to identify which commit comes earliest in your Git history.

    • In the example, commit 8728dbe67 was the first commit to contain the secret.
  4. Start an interactive rebase with git rebase -i <COMMIT-ID>~1.

    • For <COMMIT-ID>, use the commit identified in step 3. For example, git rebase -i 8728dbe67~1.
  5. In the editor, choose to edit the commit identified in step 3 by changing pick to edit on the first line of the text.

    edit 8728dbe67 my second commit message
    pick 03d69e5d3 my third commit message
    pick 8053f7b27 my fourth commit message
    
  6. Speichere den Vorgang und schließe den Editor, um den interaktiven Rebase-Vorgang zu starten.

  7. Entferne das Geheimnis aus deinem Code.

  8. Committe deine Änderungen mithilfe von git commit --amend.

  9. Führe git rebase --continue aus, um das Rebasing fertigzustellen.

  10. Pushe die Änderungen mit git push.

Umgehen des Pushschutzes

Wenn GitHub ein Geheimnis sperrt, von dem Sie glauben, dass es sicher ist, es zu pushen, können Sie die Sperrung umgehen, indem Sie einen Grund angeben, warum das Geheimnis gepusht werden darf.

Wenn du das Pushen eines Geheimnisses zulässt, wird auf der Registerkarte Sicherheit eine Warnung erstellt. GitHub schließt diese Warnung und sendet keine Benachrichtigung, wenn du angibst, dass das Geheimnis ein False Positive ist oder nur in Tests verwendet wird. Wenn du angibst, dass das Geheimnis echt ist und das Problem später behoben wird, lässt GitHub die Sicherheitsbenachrichtigung offen und sendet Benachrichtigungen an dendie Autorin des Commits sowie an die Repositoryadministrator*innen. Weitere Informationen findest du unter Verwalten von Warnungen aus der Geheimnisüberprüfung.

Wenn ein Mitwirkender einen Pushschutzblock für ein Geheimnis umgeht, sendet GitHub auch eine Warnung per E-Mail an die Organisationsbesitzer, Sicherheits-Manager und Repositoryadministratoren, die sich für E-Mail-Benachrichtigungen angemeldet haben.

Wenn Sie die Option zum Umgehen der Sperrung nicht sehen, hat der Repository-Administrator oder der Organisationsbesitzer strengere Kontrollen für den Push-Schutz eingerichtet. Stattdessen sollten Sie das Geheimnis aus dem Commit entfernen oder eine Anforderung für „Rechte umgehen“ senden, um das blockierte Geheimnis zu übertragen. Weitere Informationen finden Sie unter „Anfordern von Umgehungsberechtigungen“ in der GitHub Enterprise Cloud-Dokumentation.

  1. Klicke auf die URL, die von GitHub zurückgegeben wird, wenn dein Push blockiert wurde.

  2. Wähle die Option aus, die am besten beschreibt, warum du in der Lage sein solltest, den geheimen Schlüssel zu pushen.

    • Wenn das Geheimnis nur in Tests verwendet wird und keine Bedrohung darstellt, klicke auf It's used in tests (Wird in Tests verwendet).
    • Wenn die erkannte Zeichenfolge kein Geheimnis ist, klicke auf It's a false positive (Es handelt sich um einen False Positive).
    • Wenn das Geheimnis echt ist, du es jedoch später beheben möchtest, klicke auf I'll fix it later (Problem wird später behoben).
  3. Klicke auf Allow me to push this secret (Pushen dieses Geheimnisses zulassen).

  4. Wiederhole den Push innerhalb von drei Stunden über die Befehlszeile. Wenn du innerhalb von drei Stunden keinen Push durchgeführt hast, musst du diesen Vorgang wiederholen.

Weitere Informationen