565 Stimmen

Mit einem Token bei GitHub authentifizieren

Ich versuche, mich bei GitHub mit einem persönlichen Zugriffstoken zu authentifizieren. In den Hilfeseiten von GitHub wird angegeben, die cURL-Methode zur Authentifizierung zu verwenden (Erstellen eines persönlichen Zugriffstokens). Ich habe dies versucht, aber ich kann immer noch nicht auf GitHub pushen. Bitte beachten Sie, dass ich versuche, von einem nicht authentifizierten Server aus zu pushen (Travis CI).

cd $HOME
git config --global user.email "emailadresse@yahoo.com"
git config --global user.name "benutzername"

curl -u "benutzername:" https://github.com/benutzername/ol3-1.git
git clone --branch=gh-pages https://github.com/benutzername/ol3-1.git gh-pages

cd gh-pages
mkdir buildtest
cd buildtest
touch asdf.asdf

git add -f .
git commit -m "Travis Build $TRAVIS_BUILD_NUMBER auf gh-pages geschoben"
git push -fq origin gh-pages

Dieser Code verursacht die Fehler:

remote: Anonymer Zugriff auf scuzzlebuzzle/ol3-1.git verweigert.

fatal: Authentifizierung fehlgeschlagen für 'https://github.com/scuzzlebuzzle/ol3-1.git/'"

87voto

Omar Magdy Punkte 925

Schritt 1: Holen Sie sich das Zugriffstoken

Gehen Sie zu diesem Link: https://github.com/settings/tokens. Und generieren Sie dort das Token.

Oder von Ihrem Github-Konto aus, gehen Sie zu:
Einstellungen -> Entwicklereinstellungen -> Persönliche Zugriffstoken

Schritt 2: Verwenden Sie das Token

**git push

Benutzername: 
Passwort:**

42voto

Bosh Punkte 7378

Um zu vermeiden, "die Schlüssel zum Schloss" zu übergeben...

Beachten Sie, dass die Antwort von sigmavirus24 erfordert, dass Sie Travis einen Token mit ziemlich weitreichenden Berechtigungen geben - da GitHub nur Tokens mit weiten Bereichen wie "schreibe alle meine öffentlichen Repos" oder "schreibe alle meine privaten Repos" anbietet.

Wenn Sie den Zugriff einschränken möchten (mit etwas mehr Aufwand!) können Sie GitHub-Bereitstellungsschlüssel in Kombination mit Travis-verschlüsselten Yaml-Feldern verwenden.

Hier ist eine Skizze, wie die Technik funktioniert...

Erzeugen Sie zuerst einen RSA-Bereitstellungsschlüssel (über ssh-keygen) namens my_key und fügen Sie ihn als Bereitstellungsschlüssel in den Einstellungen Ihres GitHub-Repositorys hinzu.

Dann...

$ password=`openssl rand -hex 32`
$ cat my_key | openssl aes-256-cbc -k "$password" -a  > my_key.enc
$ travis encrypt --add password=$password -r my-github-user/my-repo

Verwenden Sie dann die Datei $password, um Ihren Bereitstellungsschlüssel zur Integrationszeit zu entschlüsseln, indem Sie ihn zu Ihrer Yaml-Datei hinzufügen:

before_script: 
  - openssl aes-256-cbc -k "$password" -d -a -in my_key.enc -out my_deploy_key
  - echo -e "Host github.com\n  IdentityFile /path/to/my_deploy_key" > ~/.ssh/config
  - echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" > ~/.ssh/known_hosts

Hinweis: Die letzte Zeile füllt den RSA-Schlüssel von GitHub vorab aus, was das manuelle Akzeptieren zum Zeitpunkt einer Verbindung überflüssig macht.

39voto

Tony Ngo Punkte 19256

Normalerweise mache ich das so:

 git push https://$(git_token)@github.com/user_name/repo_name.git

Der git_token wird aus der Variable config in Azure DevOps gelesen.

Sie können meinen vollständigen Blog-Beitrag hier lesen.

39voto

Für macOS, wenn Sie nicht zur Eingabe eines Benutzernamens und eines Passworts aufgefordert werden, bedeutet dies, dass Ihr Passwort im Schlüsselbund gespeichert ist. Jedes Mal, wenn Sie versuchen zu klonen oder zu pushen, wird versucht, Ihr altes Passwort zu verwenden.

Befolgen Sie diese drei Schritte, um das Problem zu lösen:

  1. Generieren Sie einen PAT (persönlichen Zugriffstoken) - LINK
  2. Öffnen Sie den Schlüsselbund (über Spotlight-Suche) suchen Sie nach GitHub klicken Sie auf GitHub ändern und speichern Sie mit Ihrem neuen PAT link
  3. Versuchen Sie erneut zu pushen oder zu klonen. Jetzt haben Sie den PAT anstelle Ihres Passworts gespeichert.

36voto

Brunno Punkte 747

Sie können Ihre Remote-Authentifizierung ganz einfach ändern, zuerst:

Entfernen Sie Ihren aktuellen Ursprung:

git remote remove origin

Und dann:

git remote add origin https://@github.com//.git

Sie können herausfinden, wie Sie Ihren Authentifizierungstoken generieren können hier.

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