Erstellen von Geheimnissen für ein Repository
Um Geheimnisse oder Variablen auf GitHub für ein Organisations-Repository zu erstellen, benötigen Sie write Zugriff. Für ein persönliches Konto-Repository müssen Sie Repository-Kollaborator sein.
-
Navigieren Sie auf GitHub zur Hauptseite des Repositorys.
-
Klicke unter dem Repositorynamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Wähle im Abschnitt „Security“ der Randleiste Secrets and variables, und klicke anschließend auf Actions.
-
Klicke auf die Registerkarte Geheimnisse.
 -
Klicke auf Neues Repositorygeheimnis.
-
Gib im Feld Name einen Namen für dein Geheimnis ein.
-
Gib im Feld Geheimnis einen Wert für dein Geheimnis ein.
-
Klicke auf Geheimnis hinzufügen.
Wenn dein Repository über Umgebungsgeheimnisse verfügt oder auf Geheimnisse der übergeordneten Organisation zugreifen kann, werden diese Geheimnisse auch auf dieser Seite aufgeführt.
Verwende zum Hinzufügen eines Geheimnisses auf Repositoryebene den Unterbefehl gh secret set. Ersetze secret-name durch den Namen deines Geheimnisses.
gh secret set SECRET_NAME
Du wirst von der CLI zur Eingabe eines Werts für das Geheimnis aufgefordert. Alternativ kannst du den Wert des Geheimnisses aus einer Datei lesen.
gh secret set SECRET_NAME < secret.txt
Verwende zum Auflisten aller Geheimnisse für das Repository den Unterbefehl gh secret list.
Erstellen von Geheimnissen für eine Umgebung
Um Geheimnisse oder Variablen für eine Umgebung in einem Repository eines persönlichen Kontos zu erstellen, müssen Sie Besitzer des Repositorys sein. Für das Erstellen von Geheimnissen oder Variablen für eine Umgebung in einem Organisationsrepository benötigen Sie admin-Zugriff. Weitere Informationen zu Umgebungen findest du unter Verwalten von Umgebungen für die Bereitstellung.
-
Navigieren Sie auf GitHub zur Hauptseite des Repositorys.
-
Klicke unter dem Repositorynamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke auf der linken Randleiste auf Umgebungen.
-
Klicke auf die Umgebung, der du ein Geheimnis hinzufügen möchtest.
-
Klicke unter Umgebungsgeheimnisse auf Geheimnis hinzufügen.
-
Gib einen Namen für dein Geheimnis in das Eingabefeld Name ein.
-
Gib den Wert für das Geheimnis ein.
-
Klicke auf Geheimnis hinzufügen.
Wenn du ein Geheimnis für eine Umgebung hinzufügen möchtest, verwende den Unterbefehl gh secret set mit dem Flag --env oder -e und dem Namen der Umgebung.
gh secret set --env ENV_NAME SECRET_NAME
Wenn du alle Geheimnisse für eine Umgebung auflisten möchtest, verwende den Unterbefehl gh secret list mit dem Flag --env oder -e und dem Namen der Umgebung.
gh secret list --env ENV_NAME
Erstellen von Geheimnissen für eine Organisation
Beim Erstellen eines Geheimnisses oder einer Variable in einer Organisation kannst du mit einer Richtlinie den Zugriff jeweils nach Repository einschränken. Du kannst beispielsweise allen Repositorys Zugriff gewähren oder nur private Repositorys oder eine angegebene Liste von Repositorys zulassen.
Organisationsbesitzerinnen und Benutzerinnen mit den Berechtigungen „Organisationsaktionenvariablen verwalten“ oder „Organisationsaktioneneheimnisse verwalten“ können Geheimnisse oder Variablen auf Organisationsebene erstellen.
Weitere Informationen findest du unter Berechtigungen von benutzerdefinierten Organisationsrollen.
-
Navigieren Sie auf GitHub zur Hauptseite der Organisation.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Wähle im Abschnitt „Security“ der Randleiste Secrets and variables, und klicke anschließend auf Actions.
-
Klicke auf die Registerkarte Geheimnisse.

Hinweis
Auf der Seite „Actions secrets and variables“ werden je nach deinen Berechtigungen möglicherweise keine unterschiedlichen Registerkarten für Geheimnisse und Variablen angezeigt. Organisationsbesitzerinnen und Benutzerinnen mit den Berechtigungen „Organisationsaktionenvariablen verwalten“ und „Organisationsaktionengeheimnisse verwalten“ sehen die Registerkarten Variablen und Geheimnisse. Weitere Informationen finden Sie unter Berechtigungen von benutzerdefinierten Organisationsrollen.
-
Klicke auf Neues Organisationsgeheimnis.
-
Gib einen Namen für dein Geheimnis in das Eingabefeld Name ein.
-
Gib den Wert für das Geheimnis ein.
-
Wähle in der Dropdownliste Repositoryzugriff eine Zugriffsrichtlinie aus.
-
Klicke auf Geheimnis hinzufügen.
Hinweis
Standardmäßig authentifiziert sich GitHub CLI mit den Bereichen repo und read:org. Zur Verwaltung von Organisationsgeheimnissen musst du zusätzlich den Bereich admin:org autorisieren.
gh auth login --scopes "admin:org"
Wenn du ein Geheimnis für eine Organisation hinzufügen möchtest, verwende den Unterbefehl gh secret set mit dem Flag --org oder -o und dem Namen der Organisation.
gh secret set --org ORG_NAME SECRET_NAME
Standardmäßig ist das Geheimnis nur für private Repositorys verfügbar. Wenn du angeben möchtest, dass das Geheimnis für alle Repositorys innerhalb der Organisation verfügbar sein soll, verwende das Flag --visibility oder -v.
gh secret set --org ORG_NAME SECRET_NAME --visibility all
Wenn du angeben möchtest, dass das Geheimnis für ausgewählte Repositorys innerhalb der Organisation verfügbar sein soll, verwende das Flag --repos oder -r.
gh secret set --org ORG_NAME SECRET_NAME --repos REPO-NAME-1, REPO-NAME-2
Wenn du alle Geheimnisse für eine Organisation auflisten möchtest, verwende den Unterbefehl gh secret list mit dem Flag --org oder -o und dem Namen der Organisation.
gh secret list --org ORG_NAME
Überprüfen des Zugriffs auf Organisationsgeheimnisse
Du kannst überprüfen, welche Zugriffsrichtlinien auf ein Geheimnis in deiner Organisation angewendet werden.
-
Navigieren Sie auf GitHub zur Hauptseite der Organisation.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Wähle im Abschnitt „Security“ der Randleiste Secrets and variables, und klicke anschließend auf Actions.
-
Die Liste der Geheimnisse enthält alle konfigurierten Berechtigungen und Richtlinien. Klicke auf Aktualisieren, um weitere Details zu den konfigurierten Berechtigungen des jeweiligen Geheimnisses anzuzeigen.
Verwenden von Geheimnissen in einem Workflow
Hinweis
- Mit Ausnahme von
GITHUB_TOKENwerden Geheimnisse nicht an den Runner übergeben, wenn ein Workflow von einem geforkten Repository aus ausgelöst wird. - Geheimnisse werden nicht automatisch an wiederverwendbare Workflows übergeben. Weitere Informationen finden Sie unter Wiederverwenden von Workflows.
- Geheime Schlüssel sind für Workflows, die durch Dependabot Ereignisse ausgelöst werden, nicht verfügbar. Weitere Informationen finden Sie unter Problembehandlung für Dependabot auf GitHub Actions.
- Wenn deine GitHub Actions-Workflows auf Ressourcen eines Cloudanbieters zugreifen müssen, der OpenID Connect (OIDC) unterstützt, kannst du deine Workflows so konfigurieren, dass die Authentifizierung direkt beim Cloudanbieter erfolgt. Dadurch musst du diese Anmeldeinformationen nicht mehr als langlebige Geheimnisse speichern und profitierst zudem von weiteren Sicherheitsvorteilen. Weitere Informationen finden Sie unter OpenID Connect.
Warnung
Maskieren Sie alle vertraulichen Informationen, die nicht geheim GitHub sind, indem Sie ::add-mask::VALUEverwenden. Dadurch wird der Wert als geheim behandelt und aus den Protokollen herausgenommen.
Wenn du für eine Aktion ein Geheimnis als Eingabe- oder Umgebungsvariable bereitstellen möchtest, kannst du mithilfe des secrets-Kontexts auf Geheimnisse zugreifen, die du in deinem Repository erstellt hast. Weitere Informationen findest du unter Kontextreferenz und Workflowsyntax für GitHub Actions.
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
In if:-Bedingungen kann nicht direkt auf Geheimnisse verwiesen werden. Erwäge stattdessen, Geheimnisse als Umgebungsvariablen auf Auftragsebene festzulegen, und verweise dann auf die Umgebungsvariablen, um Schritte im Auftrag bedingt auszuführen. Weitere Informationen findest du unter Kontextreferenz und jobs.<job_id>.steps[*].if.
Wenn kein geheimer Schlüssel festgelegt wurde, ist der Rückgabewert eines Ausdrucks, der auf den geheimen Schlüssel verweist (z ${{ secrets.SuperSecret }} . B. im Beispiel), eine leere Zeichenfolge.
Wann immer dies möglich ist, vermeide die Übergabe von Geheimnissen zwischen Prozessen von der Befehlszeile aus. Befehlszeilenprozesse sind möglicherweise für andere Benutzer*innen sichtbar (mit dem Befehl ps) oder können durch Sicherheitsüberwachungsereignisse erfasst werden. Verwende zum Schutz von Geheimnissen Umgebungsvariablen, STDIN oder andere Methoden, die vom Zielprozess unterstützt werden.
Wenn du Geheimnisse innerhalb einer Kommandozeile übergeben musst, umschließe sie im Rahmen der gültigen Quotierungsregeln. Geheimnisse enthalten oft Sonderzeichen, die in deiner Shell unbeabsichtigte Wirkungen entfalten können. Um diese Sonderzeichen zu vermeiden, verwende deine Umgebungsvariablen mit Anführungszeichen. Beispiel:
Beispiel mit Bash
steps:
- shell: bash
env:
SUPER_SECRET: ${{ secrets.SuperSecret }}
run: |
example-command "$SUPER_SECRET"
Beispiel mit PowerShell
steps:
- shell: pwsh
env:
SUPER_SECRET: ${{ secrets.SuperSecret }}
run: |
example-command "$env:SUPER_SECRET"
Beispiel mit Cmd.exe
steps:
- shell: cmd
env:
SUPER_SECRET: ${{ secrets.SuperSecret }}
run: |
example-command "%SUPER_SECRET%"
Speichern großer Geheimnisse
Um geheime Schlüssel zu verwenden, die größer als 48 KB sind, können Sie eine Problemumgehung verwenden, um geheime Schlüssel in Ihrem Repository zu speichern und die Entschlüsselungspassphrase als geheimer Schlüssel GitHubzu speichern. Zum Beispiel können Sie gpg verwenden, um eine Datei, die Ihr Geheimnis enthält, lokal zu verschlüsseln, bevor Sie die verschlüsselte Datei in Ihr Repository auf GitHub einchecken. Weitere Informationen findest du unter gpg manpage.
Warnung
Vergewissere dich, dass deine Geheimnisse beim Ausführen des Workflows nicht gedruckt werden. Wenn Sie diese Problemumgehung verwenden, werden geheime Informationen, die in Protokollen gedruckt werden, nicht zensiert.
-
Führe in deinem Terminal den folgenden Befehl aus, um die Datei mit deinem Geheimnis mithilfe von
gpgund dem AES256-Verschlüsselungsalgorithmus zu verschlüsseln. In diesem Beispiel istmy_secret.jsondie Datei, die das Geheimnis enthält.gpg --symmetric --cipher-algo AES256 my_secret.json -
Du wirst aufgefordert, eine Passphrase einzugeben. Denken Sie an die Passphrase, da Sie einen neuen geheimen Schlüssel GitHub erstellen müssen, der die Passphrase als Wert verwendet.
-
Erstelle ein neues Geheimnis, das die Passphrase enthält. Erstelle z. B. ein neues Geheimnis mit dem Namen
LARGE_SECRET_PASSPHRASE, und lege den Wert des Geheimnisses auf die Passphrase fest, die du im vorherigen Schritt verwendet hast. -
Kopiere deine verschlüsselte Datei in einen Pfad in deinem Repository, und committe sie. In diesem Beispiel lautet die verschlüsselte Datei
my_secret.json.gpg.Warnung
Kopiere die verschlüsselte
my_secret.json.gpg-Datei, die mit der Dateierweiterung.gpgendet, und nicht die unverschlüsseltemy_secret.json-Datei.git add my_secret.json.gpg git commit -m "Add new secret JSON file" -
Erstelle ein Shellskript in deinem Repository, um die Geheimnisdatei zu entschlüsseln. In diesem Beispiel heißt das Skript
decrypt_secret.sh.Shell #!/bin/sh # Decrypt the file mkdir $HOME/secrets # --batch to prevent interactive command # --yes to assume "yes" for questions gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \ --output $HOME/secrets/my_secret.json my_secret.json.gpg
#!/bin/sh # Decrypt the file mkdir $HOME/secrets # --batch to prevent interactive command # --yes to assume "yes" for questions gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \ --output $HOME/secrets/my_secret.json my_secret.json.gpg -
Stelle sicher, dass dein Shell-Skript ausführbar ist, bevor du es in deinem Repository eincheckst.
chmod +x decrypt_secret.sh git add decrypt_secret.sh git commit -m "Add new decryption script" git push -
Verwenden Sie in Ihrem GitHub Actions Workflow ein
step-Shellskript, um das Skript auszuführen und das Geheimnis zu entschlüsseln. Verwende für eine Kopie deines Repositorys in der Umgebung, in der dein Workflow ausgeführt wird, die Aktionactions/checkout. Verweise relativ zum Stamm des Repositorys mithilfe des Befehlsrunauf dein Shellskript.name: Workflows with large secrets on: push jobs: my-job: name: My Job runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Decrypt large secret run: ./decrypt_secret.sh env: LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} # This command is just an example to show your secret being printed # Ensure you remove any print statements of your secrets. GitHub does # not hide secrets that use this workaround. - name: Test printing your secret (Remove this step in production) run: cat $HOME/secrets/my_secret.json
Speichern binärer Base64-Blobs als Geheimnisse
Mithilfe der Base64-Codierung kannst du kleine binäre Blobs als Geheimnisse speichern. Anschließend kannst du in deinem Workflow auf das Geheimnis verweisen und es zur Verwendung im Runner decodieren. Die Größenbeschränkungen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.
Hinweis
- Base64 ermöglicht nur eine Konvertierung von Binärdaten in Text und ersetzt nicht die eigentliche Verschlüsselung.
- Die Verwendung einer anderen Shell erfordert möglicherweise andere Befehle zum Decodieren des Geheimnisses in eine Datei. Unter Windows-Runnern wird empfohlen, eine Bash-Shell mit
shell: bashzu verwenden, um die Befehle im obigenrun-Schritt zu verwenden.
-
Verwende
base64, um die Datei in eine Base64-Zeichenfolge zu codieren. Beispiel:Unter macOS können Sie Folgendes ausführen:
base64 -i cert.der -o cert.base64Unter Linux können Sie Folgendes ausführen:
base64 -w 0 cert.der > cert.base64 -
Erstelle ein Geheimnis, das die Base64-Zeichenfolge enthält. Beispiel:
$ gh secret set CERTIFICATE_BASE64 < cert.base64 ✓ Set secret CERTIFICATE_BASE64 for octocat/octorepo -
Geben Sie das Geheimnis in
base64 --decodeweiter, um über den Runner auf die Base64-Zeichenfolge zuzugreifen. Beispiel:name: Retrieve Base64 secret on: push: branches: [ octo-branch ] jobs: decode-secret: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Retrieve the secret and decode it to a file env: CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }} run: | echo $CERTIFICATE_BASE64 | base64 --decode > cert.der - name: Show certificate information run: | openssl x509 -in cert.der -inform DER -text -noout
Nächste Schritte
Referenzinformationen findest du unter Referenzen zu Geheimnissen.