423 Stimmen

Wie vermeide ich die Angabe des Benutzernamens und des Passworts bei jedem Git-Push?

I git push meine Arbeit in ein entferntes Git-Repository.

Alle push wird mich zur Eingabe auffordern username y password . Ich möchte das bei jedem Push vermeiden, aber wie kann ich das konfigurieren, um es zu vermeiden?

5voto

jakobinn Punkte 1421

Ich empfehle die Verwendung eines Credential Managers zum Speichern der GitHub-Anmeldedaten. Verwendung von git config --global credential.helper store ist nicht sicher, da es das GitHub-Passwort im Klartext speichert. Für Linux, libsecret ist eine hervorragende Alternative. Für Ubuntu und einige andere Linux-Distributionen können Sie wie folgt vorgehen:

Installieren:

sudo apt-get update
sudo apt install libsecret-1-0 libsecret-1-dev
sudo apt install gnome-keyring

erstellen.

cd /usr/share/doc/git/contrib/credential/libsecret/
Sudo make 

Konfigurieren Sie Git so, dass es Passwörter mit libsecret speichert

git config --global credentail.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Ihre Git-Anmeldedaten werden von libsecret gespeichert, nachdem Sie Ihr Passwort eingegeben haben einmal nach dieser Einrichtung.

4voto

radfast Punkte 511

Wenn Ihr PC sicher ist oder Sie sich nicht um die Passwortsicherheit kümmern, kann dies sehr einfach erreicht werden. Angenommen, das entfernte Repository befindet sich auf GitHub und origin Ihr lokaler Name für das entfernte Repository ist, verwenden Sie diesen Befehl

git remote set-url --push origin https://<username>:<password>@github.com/<repo>

En --push Flagge sorgt dafür, dass die URL des Repositorys für die git push nur den Befehl. (Die im ursprünglichen Beitrag gestellte Frage bezieht sich auf git push nur den Befehl. Das Erfordernis eines Benutzernamens und eines Kennworts nur für Push-Vorgänge ist die normale Einrichtung für öffentlich Repositories auf GitHub . Beachten Sie, dass privat Repositories auf GitHub würden auch einen Benutzernamen und ein Passwort für Pull- und Fetch-Operationen erfordern, so dass Sie für ein privates Repository nicht die --push flag ...)

WARNUNG: Dies ist von Natur aus unsicher, weil:

  1. Ihr ISP oder jeder, der Ihre Netzzugänge protokolliert, kann leicht das Passwort im Klartext in der URL sehen;

  2. jeder, der sich Zugang zu Ihrem PC verschafft, kann Ihr Kennwort einsehen, indem er git remote show origin .

Deshalb ist die Verwendung eines SSH-Schlüssels die akzeptierte Lösung.

Auch ein SSH-Schlüssel ist nicht völlig sicher . Jeder, der sich Zugang zu Ihrem PC verschafft, kann zum Beispiel immer noch Pushes machen, die Ihr Repository zerstören, oder - schlimmer noch - Commits pushen, die subtile Änderungen an Ihrem Code vornehmen. (Alle gepushten Commits sind natürlich auf GitHub gut sichtbar. Aber wenn jemand Ihren Code heimlich ändern wollte, könnte er --amend eine frühere Übergabe ohne Änderung der Übergabemeldung, und erzwingen Sie dann einen Push. Das wäre unauffällig und in der Praxis kaum zu bemerken).

Aber die Preisgabe des Passworts ist schlechter . Wenn ein Angreifer Kenntnis von Ihrem Benutzernamen und Ihrem Passwort erlangt, kann er Sie aus Ihrem eigenen Konto aussperren, Ihr Konto löschen, das Repository dauerhaft löschen usw.


Alternativ dazu - der Einfachheit halber y Sicherheit - Sie können liefern nur Ihren Benutzernamen in der URL, so dass Sie Ihr Passwort jedes Mal eingeben müssen, wenn Sie git push aber Sie müssen nicht jedes Mal Ihren Benutzernamen eingeben. (Mir gefällt dieser Ansatz sehr gut, da ich jedes Mal, wenn ich das Passwort eingeben muss, eine Denkpause einlege. git push Ich kann also nicht git push zufällig).

git remote set-url --push origin https://<username>@github.com/<repo>

4voto

Krishna Punkte 6063

Mit dem folgenden Befehl konnte ich das Problem lösen.

git config --global credential.helper wincred

Bitte lesen Sie die untenstehende Github-Dokumentation:

https://help.github.com/articles/caching-your-github-password-in-git/

4voto

Hearen Punkte 6799

Soweit ich weiß, gibt es lediglich zwei sicher Möglichkeiten: ssh o passwd verschlüsselt mit einem Keystore .

SSH

  1. Loggen Sie sich in Ihr Github ein;
  2. Besuch: https://github.com/settings/keys ;
  3. Neuer SSH-Schlüssel;
  4. cat ~/.ssh/id_rsa.pub ein, fügen Sie sie dort ein, benennen Sie sie und speichern Sie sie (wenn Sie keine solche Datei haben, erstellen Sie sich eine mit ssh-keygen -t rsa - nur Eingabe für alle Aufforderungen);
  5. Gehen Sie zu Ihrem lokalen Repository und aktualisieren Sie Ihr Remote-Repository mit git remote set-url origin git+ssh://git@github.com/username/reponame.git - können Sie es zunächst überprüfen, indem Sie git remote -v );
  6. Hier, bitte sehr, einfach touch t; git add t; git commit -m "test"; git push und bestätigen Sie ja, um in den Genuss der Passwortfrei Welt.

passwd ENCRYPTED unter Verwendung eines Schlüsselspeichers

Wenn Sie nur git config --global credential.helper store wie bereits von anderen erwähnt, Ihr unverschlüsselt Passwörter werden nur im Klartext gespeichert unter ~/.git-credentials was nicht so sicher ist, wie es klingt.

Versuchen Sie verschlüsseln es als

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

git config --global credential.helper store

In diesem Fall verwenden Sie https://git@github.com/username/reponame.git .

3voto

Мони Мон Punkte 31

Meine Lösung unter Windows:

  1. Klicken Sie mit der rechten Maustaste auf das zu pushende Verzeichnis und wählen Sie "Git Bash Here".
  2. ssh-keygen -t rsa (Drücken Sie die Eingabetaste für alle Werte)
  3. Prüfen Sie das Terminal auf: Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
  4. Kopieren des öffentlichen Schlüssels aus der angegebenen Datei.
  5. Gehen Sie zu Ihrem GitHub-Profil => Einstellungen => SSH- und GPG-Schlüssel => Neuer SSH-Schlüssel => Fügen Sie dort Ihren SSH-Schlüssel ein => Speichern

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