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?
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?
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.
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:
Ihr ISP oder jeder, der Ihre Netzzugänge protokolliert, kann leicht das Passwort im Klartext in der URL sehen;
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>
Soweit ich weiß, gibt es lediglich zwei sicher Möglichkeiten: ssh o passwd verschlüsselt mit einem Keystore .
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);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
);touch t; git add t; git commit -m "test"; git push
und bestätigen Sie ja, um in den Genuss der Passwortfrei Welt.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
.
Meine Lösung unter Windows:
ssh-keygen -t rsa
(Drücken Sie die Eingabetaste für alle Werte)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
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.