Wie vermeide ich die Angabe des Benutzernamens und des Passworts bei jedem Git-Push?
317
Ich git pusharbeite an einem entfernten Git-Repository.
Jeder pushwird mich zur Eingabe auffordern usernameund password. Ich möchte es bei jedem Push vermeiden, aber wie konfiguriere ich es, um es zu vermeiden?
2. Ordnen Sie den SSH-Schlüssel dem Remote-Repository zu
Dieser Schritt hängt davon ab, wie Ihre Fernbedienung eingerichtet ist.
Wenn es sich um ein GitHub-Repository handelt und Sie über Administratorrechte verfügen, gehen Sie zu den Einstellungen und klicken Sie auf "SSH-Schlüssel hinzufügen". Kopieren Sie den Inhalt von ~/.ssh/id_rsa.pubin das Feld "Schlüssel".
Wenn Ihr Repository von einer anderen Person verwaltet wird, geben Sie dem Administrator Ihre id_rsa.pub.
Wenn Ihr Remote-Repository von Ihrem verwaltet wird, können Sie diesen Befehl beispielsweise verwenden:
3. Stellen Sie Ihre Remote-URL auf ein Formular ein, das SSH 1 unterstützt
Wenn Sie die obigen Schritte ausgeführt haben und weiterhin die Kennwortabfrage erhalten, stellen Sie sicher, dass Ihre Repo-URL im Formular enthalten ist
Ich habe Schritt 1 und Schritt 2 auf Ubuntu ausgeführt, aber es fragt mich immer noch nach u_id passwd. Ich lief auch: ssh -T [email protected]. Immer noch die gleichen. Was ist zu tun?
Radhika
4
@Rads Hast du die andere Antwort von Eric P ausprobiert ?
Yo '
2
@dialex Er meinte eine Person, die das Remote-Git-Repository verwaltet.
Selalerer
5
git remote set-url origin git + ssh: //[email protected]/username/reponame.git Dieser Befehl ist hilfreich für mich.
Künstliche
2
Das hat bei mir funktioniertgit remote set-url origin [email protected]:/username/projectname.git
Kurt
181
Permanente Authentifizierung mit Git-Repositorys,
Führen Sie den folgenden Befehl aus, um das Caching von Anmeldeinformationen zu aktivieren.
$ git config credential.helper store
$ git push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
Die Verwendung sollte auch angeben, dass das Caching abläuft .
Vielen Dank. Können Sie bitte erklären, was der Befehl config bewirkt? Ich frage mich, warum ich beim ersten Push auf ein Repo nicht einmal nach einem Passwort gefragt werde.
HelloWorldNoMore
1
@vivoconunxino Wahrscheinlich, weil es von Natur aus unsicher ist. Aus der gitManpage: "Wenn Sie diesen Helfer verwenden, werden Ihre Passwörter unverschlüsselt auf der Festplatte gespeichert und nur durch Dateisystemberechtigungen geschützt."
cmaster
15
In dieser Antwort fehlt eine Warnung, dass der storeHelfer für Anmeldeinformationen das Kennwort unverschlüsselt auf der Festplatte speichert.
Wenn Sie Ihre SSH-Schlüssel bereits eingerichtet haben und weiterhin die Kennwortabfrage erhalten, stellen Sie sicher, dass Ihre Repo-URL im Formular enthalten ist
Dies hat mein Problem behoben, nachdem ich git initlokal verwendet und dann versucht hatte, nach dem Hinzufügen der Fernbedienung von einem neuen Repo auf der GitHub-Website zu pushen.
Sheldonkreger
1
Ich bin mir nicht sicher, warum dies nicht Teil der akzeptierten Antwort ist. Vielen Dank!
Jwalk
1
Die akzeptierte Antwort sollte sich aus der tatsächlich akzeptierten Antwort und dieser zusammensetzen.
Puce
3
Sie können das "git + ssh: //" weglassen und einfach[email protected]/username/reponame.git
Ivan Shulev
1
@IvanShulev Ich habe es zunächst ohne Git + SSH versucht und nicht funktioniert
Antonello
40
Verwenden Sie einfach die --repoOption für den Befehl git push. So was:
Oder Sie können dies standardmäßig mitgit remote set-url origin https://name:[email protected]/repo.git
ACyclic
Ich stelle fest, dass das Setzen der URL auf "a" auch [email protected]/....gitfunktioniert, wenn es Ihnen nichts ausmacht, jedes Mal nach dem Passwort zu suchen.
Tag
Für Github-Benutzer git push --repo https://github.com/Username/repo funktioniert es ohne die .git Erweiterung
Wenn Sie diesen Hilfsprogramm verwenden, werden Ihre Kennwörter unverschlüsselt auf der Festplatte gespeichert und nur durch Dateisystemberechtigungen geschützt. Wenn dies kein akzeptabler Kompromiss bei der Sicherheit ist, versuchen Sie es mit git-credential-cache oder suchen Sie einen Helfer, der in den von Ihrem Betriebssystem bereitgestellten sicheren Speicher integriert ist.
Mit einer Auszeit
Verwenden Sie den Git-Credential-Cache, in dem das Kennwort standardmäßig 15 Minuten lang gespeichert ist.
git config credential.helper cache
Verwenden Sie --timeout(hier 5 Minuten) , um ein anderes Zeitlimit festzulegen.
Wenn Sie einen Mac verwenden, verfügt Git über einen "osxkeychain" -Modus , in dem Anmeldeinformationen im sicheren Schlüsselbund zwischengespeichert werden, der an Ihr Systemkonto angehängt ist. Diese Methode speichert die Anmeldeinformationen auf der Festplatte und läuft nie ab. Sie werden jedoch mit demselben System verschlüsselt, auf dem HTTPS-Zertifikate und automatische Safari-Ausfüllungen gespeichert sind. Wenn Sie Folgendes in der Befehlszeile ausführen, wird diese Funktion aktiviert : git config --global credential.helper osxkeychain. Sie müssen die Anmeldeinformationen auch mit der Schlüsselbund-App im Schlüsselbund speichern.
Wenn Sie Windows verwenden, können Sie einen Hilfsprogramm namens "Git Credential Manager für Windows" installieren. Dies ähnelt dem oben beschriebenen "osxkeychain" -Helfer, verwendet jedoch den Windows Credential Store, um vertrauliche Informationen zu steuern. Es kann unter https://github.com/Microsoft/Git-Credential-Manager-for-Windows gefunden werden . [betont meine]
Für Windows credential.helper cachefunktioniert NICHT. Es sollte sein git config --global credential.helper wincred.
Paulo Merson
1
Dies ist hilfreich, wenn Sie gezwungen sind, https zu verwenden. Mein Git auf dem Server hängt, wenn ich ssh verwende, daher habe ich keine Option für SSH-Schlüssel.
Sridhar Sarnobat
8
Ich habe den https-Link ( https://github.com/org/repo.git) anstelle des SSH-Links verwendet.
Verbinden Sie Ihren Git-Client mit Ihrem Betriebssystem-Anmeldeinformationsspeicher. In Windows binden Sie beispielsweise den Helfer für Anmeldeinformationen an wincred:
Ich wollte nur mehrmals auf die oben genannte Lösung hinweisen:
git config credential.helper store
Sie können jeden Befehl verwenden, für den danach ein Kennwort erforderlich ist. Du musst nicht pushen. (Sie können zum Beispiel auch ziehen) Danach müssen Sie Ihren Benutzernamen / Ihr Passwort nicht erneut eingeben.
Ich habe die von Pavel vorgeschlagene Antwort verwendet und sie hat bei mir funktioniert. Mein Unterschied bestand darin, dies zu tun, während ich die Fernbedienung wie folgt hinzufügte:git remote add (alias) https://(name:password)@github.com/(the remote address).git
Klicken Sie mit der rechten Maustaste auf das Verzeichnis, um "Git Bash Here" zu drücken und auszuwählen.
ssh-keygen -t rsa (Drücken Sie die Eingabetaste für alle Werte)
Überprüfen Sie das Terminal auf: Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
Kopieren Sie den öffentlichen Schlüssel aus der angegebenen Datei.
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
Wenn Ihr PC sicher ist oder Sie sich nicht um die Passwortsicherheit kümmern, kann dies sehr einfach erreicht werden. Angenommen, das Remote-Repository befindet sich auf GitHub und originist Ihr lokaler Name für das Remote-Repository. Verwenden Sie diesen Befehl
Das --pushFlag stellt sicher, dass dadurch die URL des Repositorys nur für den git pushBefehl geändert wird . (Die im ursprünglichen Beitrag gestellte Frage git pushbezieht sich nur auf Befehle. Das Erfordernis eines Benutzernamens + Kennworts nur für Push-Vorgänge ist das normale Setup für öffentliche Repositorys auf GitHub. Beachten Sie, dass für private Repositorys auf GitHub auch ein Benutzername + Kennwort für Pull- und Fetch-Vorgänge erforderlich ist Für ein privates Repository möchten Sie also nicht --push flag...) verwenden
WARNUNG: Dies ist von Natur aus unsicher, weil:
Ihr ISP oder jeder, der Ihre Netzwerkzugriffe protokolliert, kann das Kennwort in der URL leicht im Klartext sehen.
Jeder, der Zugriff auf Ihren PC erhält, kann Ihr Passwort mit anzeigen git remote show origin.
Deshalb ist die Verwendung eines SSH-Schlüssels die akzeptierte Antwort.
Selbst ein SSH-Schlüssel ist nicht ganz sicher . Jeder, der Zugriff auf Ihren PC erhält, kann beispielsweise weiterhin Pushs ausführen, die Ihr Repository zerstören, oder - schlimmer noch - Push-Commits durchführen, die geringfügige Änderungen an Ihrem Code vornehmen. (Alle Push-Commits sind auf GitHub offensichtlich gut sichtbar. Wenn jedoch jemand Ihren Code heimlich ändern wollte, konnte er --amendein vorheriges Commit durchführen, ohne die Commit-Nachricht zu ändern, und dann ein Push-Force erzwingen. Das wäre verstohlen und in der Praxis ziemlich schwer zu bemerken. )
Die Offenlegung Ihres Passworts ist jedoch schlimmer . Wenn ein Angreifer Kenntnis von Ihrem Benutzernamen und Passwort erhält, kann er Sie beispielsweise von Ihrem eigenen Konto sperren, Ihr Konto löschen, das Repository dauerhaft löschen usw.
Alternativ können Sie der Einfachheit und Sicherheit halber nur Ihren Benutzernamen in die URL eingeben, sodass Sie jedes Mal Ihr Passwort eingeben müssen, git pushaber nicht jedes Mal Ihren Benutzernamen angeben müssen. (Ich mag diesen Ansatz sehr. Wenn ich das Passwort eingeben muss, kann ich jedes Mal nachdenken git push, damit ich nicht git pushversehentlich nachdenken kann .)
Was ist, wenn Passwort hat @, bricht es Befehl denken Passwort nach @ als Teil des Git-Servers?
Pranav Singh
Wenn Ihr Passwort '@' enthält, sind Sie hier alleine. Sie können Ihr Passwort ändern?
radfast
Ich muss eine Anfrage zum Ändern des Passworts stellen, da ich die Automatisierung für die kontinuierliche Integration mit einem Dienstkonto (nicht persönlich) durchgeführt habe. Im Moment verwendet SSH Keys für die sichere Anmeldung
Pranav Singh
2
Soweit ich weiß, gibt es einfach zwei sichere Möglichkeiten: ssh oder passwd, die mit einem Keystore verschlüsselt wurden .
cat ~/.ssh/id_rsa.pub, fügen Sie es dort ein, benennen und speichern Sie es (wenn Sie keine solche Datei haben, generieren Sie eine für sich selbst ssh-keygen -t rsa- einfach für alle Eingabeaufforderungen die Eingabetaste eingeben).
Gehen Sie zu Ihrem lokalen Repository und aktualisieren Sie Ihre Fernbedienung bis git remote set-url origin git+ssh://[email protected]/username/reponame.git- Sie können dies zuerst durch überprüfengit remote -v );
Los geht's, touch t; git add t; git commit -m "test"; git pushund bestätigen Sie mit Ja, um die Welt ohne Passwort zu genießen .
passwd ENCRYPTED mit einem Keystore
Wenn Sie nur git config --global credential.helper storewie bereits erwähnt verwenden, werden Ihre unverschlüsselten Passwörter nur im Klartext unter gespeichert~/.git-credentials dem es nicht sicher ist, wie es sich anhört.
Versuchen Sie es als zu verschlüsseln
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://[email protected]/username/reponame.git.
All dies entsteht, weil git in den Befehlen clone / pull / push / fetch keine Option zum Senden der Anmeldeinformationen über eine Pipe bietet. Obwohl es credential.helper gibt, speichert es im Dateisystem oder erstellt einen Daemon usw. Häufig handelt es sich bei den Anmeldeinformationen von GIT um Systeme auf Systemebene, und die Sicherheit liegt bei der Anwendung, die die git-Befehle aufruft. Sehr unsicher.
Hier ist, was ich umgehen musste. 1. Die Git-Version (git --version) sollte größer oder gleich 1.8.3 sein.
GIT CLONE
Verwenden Sie zum Klonen "git clone URL", nachdem Sie die URL vom Format http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} in http: // {myuser}: {mypwd} @ {my_repo_ip_address} geändert haben /{myrepo_name.git}
Löschen Sie dann das Repository des Kennworts wie im nächsten Abschnitt beschrieben.
SPÜLEN
Nun, das wäre gegangen und
schrieb das Passwort in Git Remote Origin. Geben Sie "git remote -v" ein, um den Schaden anzuzeigen. Korrigieren Sie dies, indem Sie die URL des Remote-Ursprungs ohne Kennwort festlegen. "git remote set_url origin http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}"
schrieb das Passwort in .git / logs im Repository. Ersetzen Sie alle Instanzen von pwd mit einem Unix-Befehl wie find .git / logs -exec sed -i 's / {my_url_with_pwd} // g' {} \; Hier ist {my_url_with_pwd} die URL mit dem Passwort. Da die URL Schrägstriche enthält, muss sie durch zwei Schrägstriche maskiert werden. Zum Beispiel für die URL http: // kris: [email protected]/proj.git -> http: \\ / \\ / kris: [email protected] \\ / proj.git
Wenn Ihre Anwendung Java zum Ausgeben dieser Befehle verwendet, verwenden Sie ProcessBuilder anstelle von Runtime. Wenn Sie Runtime verwenden müssen, verwenden Sie getRunTime (). Exec, das das String-Array als Argumente mit / bin / bash und -c als Argumente verwendet, anstatt das, das einen einzelnen String als Argument verwendet.
GIT FETCH / PULL / PUSH
Setzen Sie das Passwort in der git remote url wie folgt: "git remote set_url origin http: // {myuser}: {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}"
Geben Sie den Befehl git fetch / push / pull ein. Sie werden dann nicht zur Eingabe des Passworts aufgefordert.
Führen Sie die Spülung wie im vorherigen Abschnitt durch. Nicht verpassen.
Sie müssen einen privaten SSH-Schlüssel einrichten. Sie können auf dieser Seite nachlesen , wie das Setup unter Mac durchgeführt wird. Wenn Sie unter Linux arbeiten, sollte die Anleitung fast dieselbe sein. Unter Windows benötigen Sie ein Tool wie MSYS .
Es scheint, dass es zumindest bei Verwendung von TortoiseGIT unter Windows möglich ist, die SSH-Schlüssel zu erstellen und diese einfach auf den GIT-Server zu übertragen:
Antworten:
1. Generieren Sie einen SSH-Schlüssel
Linux / Mac
Öffnen Sie das Terminal, um SSH-Schlüssel zu erstellen:
Für Windows
(Funktioniert nur, wenn das Festschreibungsprogramm Zertifikate / private und öffentliche SSH-Schlüssel verwenden kann.)
Hier ist eine exemplarische Vorgehensweise für Putty Gen für die oben genannten Schritte
2. Ordnen Sie den SSH-Schlüssel dem Remote-Repository zu
Dieser Schritt hängt davon ab, wie Ihre Fernbedienung eingerichtet ist.
Wenn es sich um ein GitHub-Repository handelt und Sie über Administratorrechte verfügen, gehen Sie zu den Einstellungen und klicken Sie auf "SSH-Schlüssel hinzufügen". Kopieren Sie den Inhalt von
~/.ssh/id_rsa.pub
in das Feld "Schlüssel".Wenn Ihr Repository von einer anderen Person verwaltet wird, geben Sie dem Administrator Ihre
id_rsa.pub
.Wenn Ihr Remote-Repository von Ihrem verwaltet wird, können Sie diesen Befehl beispielsweise verwenden:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
3. Stellen Sie Ihre Remote-URL auf ein Formular ein, das SSH 1 unterstützt
Wenn Sie die obigen Schritte ausgeführt haben und weiterhin die Kennwortabfrage erhalten, stellen Sie sicher, dass Ihre Repo-URL im Formular enthalten ist
im Gegensatz zu
Führen Sie Folgendes aus, um Ihre Repo-URL anzuzeigen:
Sie können die URL ändern mit:
[1] Dieser Abschnitt enthält die Antwort von Eric P.
quelle
git remote set-url origin [email protected]:/username/projectname.git
Permanente Authentifizierung mit Git-Repositorys,
Führen Sie den folgenden Befehl aus, um das Caching von Anmeldeinformationen zu aktivieren.
Die Verwendung sollte auch angeben, dass das Caching abläuft .
Nach dem Aktivieren des Caching von Anmeldeinformationen wird dieser für 7200 Sekunden (2 Stunden) zwischengespeichert .
Hinweis: Hilfsprogramm für Anmeldeinformationen zum Speichern eines unverschlüsselten Kennworts auf der lokalen Festplatte.
quelle
git
Manpage: "Wenn Sie diesen Helfer verwenden, werden Ihre Passwörter unverschlüsselt auf der Festplatte gespeichert und nur durch Dateisystemberechtigungen geschützt."store
Helfer für Anmeldeinformationen das Kennwort unverschlüsselt auf der Festplatte speichert.git config --unset credential.helper
Wenn Sie Ihre SSH-Schlüssel bereits eingerichtet haben und weiterhin die Kennwortabfrage erhalten, stellen Sie sicher, dass Ihre Repo-URL im Formular enthalten ist
im Gegensatz zu
Führen Sie Folgendes aus, um Ihre Repo-URL anzuzeigen:
Sie können die URL folgendermaßen ändern
git remote set-url
:quelle
git init
lokal verwendet und dann versucht hatte, nach dem Hinzufügen der Fernbedienung von einem neuen Repo auf der GitHub-Website zu pushen.[email protected]/username/reponame.git
Verwenden Sie einfach die
--repo
Option für den Befehl git push. So was:quelle
git remote set-url origin https://name:[email protected]/repo.git
[email protected]/....git
funktioniert, wenn es Ihnen nichts ausmacht, jedes Mal nach dem Passwort zu suchen.git push --repo https://github.com/Username/repo
funktioniert es ohne die.git
ErweiterungAuf unbestimmte Zeit speichern
Sie können den git-credential-store über verwenden
die speichert Ihr Passwort unverschlüsselt im Dateisystem :
Mit einer Auszeit
Verwenden Sie den Git-Credential-Cache, in dem das Kennwort standardmäßig 15 Minuten lang gespeichert ist.
Verwenden Sie
--timeout
(hier 5 Minuten) , um ein anderes Zeitlimit festzulegen.Sicheres Speichern auf unbestimmte Zeit (OS X und Windows)
quelle
credential.helper cache
funktioniert NICHT. Es sollte seingit config --global credential.helper wincred
.Ich habe den https-Link (
https://github.com/org/repo.git
) anstelle des SSH-Links verwendet.Das Umschalten hat das Problem für mich gelöst!
quelle
Schritt 1 -
Erstellen Sie SSH-Schlüssel auf Ihrem Linux-System mit dem folgenden Befehl
Es wird nach Passphrase und Dateiname gefragt (Standard ist ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub).
Schritt 2 -
Sobald die Dateien erstellt wurden, fügen Sie den öffentlichen Schlüssel id_rsa.pub zum Abschnitt ssh des Github-Kontos hinzu.
Schritt 3 -
Fügen Sie auf Ihrem Computer den privaten Schlüssel id_rsa mit dem folgenden Befehl zum ssh-agent hinzu
Schritt 4 -
Fügen Sie nun die Remote-URL [email protected]: user_name / repo_name.git mit dem folgenden Befehl zu Ihrem lokalen Git-Repo hinzu.
Das ist es.
quelle
Verbinden Sie Ihren Git-Client mit Ihrem Betriebssystem-Anmeldeinformationsspeicher. In Windows binden Sie beispielsweise den Helfer für Anmeldeinformationen an wincred:
Gibt es eine Möglichkeit, die Eingabe von Passwörtern zu überspringen, wenn https: // auf GitHub verwendet wird?
quelle
Verwenden Sie unter Windows stattdessen Folgendes: Dies funktioniert für mich:
z.B
quelle
Ich wollte nur mehrmals auf die oben genannte Lösung hinweisen:
Sie können jeden Befehl verwenden, für den danach ein Kennwort erforderlich ist. Du musst nicht pushen. (Sie können zum Beispiel auch ziehen) Danach müssen Sie Ihren Benutzernamen / Ihr Passwort nicht erneut eingeben.
quelle
Ich habe die von Pavel vorgeschlagene Antwort verwendet und sie hat bei mir funktioniert. Mein Unterschied bestand darin, dies zu tun, während ich die Fernbedienung wie folgt hinzufügte:
git remote add (alias) https://(name:password)@github.com/(the remote address).git
quelle
Das Ausführen des folgenden Befehls hat das Problem für mich gelöst.
Bitte beachten Sie die folgende Github-Dokumentation:
quelle
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
quelle
Wenn Ihr PC sicher ist oder Sie sich nicht um die Passwortsicherheit kümmern, kann dies sehr einfach erreicht werden. Angenommen, das Remote-Repository befindet sich auf GitHub und
origin
ist Ihr lokaler Name für das Remote-Repository. Verwenden Sie diesen BefehlDas
--push
Flag stellt sicher, dass dadurch die URL des Repositorys nur für dengit push
Befehl geändert wird . (Die im ursprünglichen Beitrag gestellte Fragegit push
bezieht sich nur auf Befehle. Das Erfordernis eines Benutzernamens + Kennworts nur für Push-Vorgänge ist das normale Setup für öffentliche Repositorys auf GitHub. Beachten Sie, dass für private Repositorys auf GitHub auch ein Benutzername + Kennwort für Pull- und Fetch-Vorgänge erforderlich ist Für ein privates Repository möchten Sie also nicht--push flag
...) verwendenWARNUNG: Dies ist von Natur aus unsicher, weil:
Ihr ISP oder jeder, der Ihre Netzwerkzugriffe protokolliert, kann das Kennwort in der URL leicht im Klartext sehen.
Jeder, der Zugriff auf Ihren PC erhält, kann Ihr Passwort mit anzeigen
git remote show origin
.Deshalb ist die Verwendung eines SSH-Schlüssels die akzeptierte Antwort.
Selbst ein SSH-Schlüssel ist nicht ganz sicher . Jeder, der Zugriff auf Ihren PC erhält, kann beispielsweise weiterhin Pushs ausführen, die Ihr Repository zerstören, oder - schlimmer noch - Push-Commits durchführen, die geringfügige Änderungen an Ihrem Code vornehmen. (Alle Push-Commits sind auf GitHub offensichtlich gut sichtbar. Wenn jedoch jemand Ihren Code heimlich ändern wollte, konnte er
--amend
ein vorheriges Commit durchführen, ohne die Commit-Nachricht zu ändern, und dann ein Push-Force erzwingen. Das wäre verstohlen und in der Praxis ziemlich schwer zu bemerken. )Die Offenlegung Ihres Passworts ist jedoch schlimmer . Wenn ein Angreifer Kenntnis von Ihrem Benutzernamen und Passwort erhält, kann er Sie beispielsweise von Ihrem eigenen Konto sperren, Ihr Konto löschen, das Repository dauerhaft löschen usw.
Alternativ können Sie der Einfachheit und Sicherheit halber nur Ihren Benutzernamen in die URL eingeben, sodass Sie jedes Mal Ihr Passwort eingeben müssen,
git push
aber nicht jedes Mal Ihren Benutzernamen angeben müssen. (Ich mag diesen Ansatz sehr. Wenn ich das Passwort eingeben muss, kann ich jedes Mal nachdenkengit push
, damit ich nichtgit push
versehentlich nachdenken kann .)quelle
@
, bricht es Befehl denken Passwort nach @ als Teil des Git-Servers?Soweit ich weiß, gibt es einfach zwei sichere Möglichkeiten: ssh oder passwd, die mit einem Keystore verschlüsselt wurden .
SSH
cat ~/.ssh/id_rsa.pub
, fügen Sie es dort ein, benennen und speichern Sie es (wenn Sie keine solche Datei haben, generieren Sie eine für sich selbstssh-keygen -t rsa
- einfach für alle Eingabeaufforderungen die Eingabetaste eingeben).git remote set-url origin git+ssh://[email protected]/username/reponame.git
- Sie können dies zuerst durch überprüfengit remote -v
);touch t; git add t; git commit -m "test"; git push
und bestätigen Sie mit Ja, um die Welt ohne Passwort zu genießen .passwd ENCRYPTED mit einem Keystore
Wenn Sie nur
git config --global credential.helper store
wie bereits erwähnt verwenden, werden Ihre unverschlüsselten Passwörter nur im Klartext unter gespeichert~/.git-credentials
dem es nicht sicher ist, wie es sich anhört.Versuchen Sie es als zu verschlüsseln
quelle
All dies entsteht, weil git in den Befehlen clone / pull / push / fetch keine Option zum Senden der Anmeldeinformationen über eine Pipe bietet. Obwohl es credential.helper gibt, speichert es im Dateisystem oder erstellt einen Daemon usw. Häufig handelt es sich bei den Anmeldeinformationen von GIT um Systeme auf Systemebene, und die Sicherheit liegt bei der Anwendung, die die git-Befehle aufruft. Sehr unsicher.
Hier ist, was ich umgehen musste. 1. Die Git-Version (git --version) sollte größer oder gleich 1.8.3 sein.
GIT CLONE
Verwenden Sie zum Klonen "git clone URL", nachdem Sie die URL vom Format http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} in http: // {myuser}: {mypwd} @ {my_repo_ip_address} geändert haben /{myrepo_name.git}
Löschen Sie dann das Repository des Kennworts wie im nächsten Abschnitt beschrieben.
SPÜLEN
Nun, das wäre gegangen und
Wenn Ihre Anwendung Java zum Ausgeben dieser Befehle verwendet, verwenden Sie ProcessBuilder anstelle von Runtime. Wenn Sie Runtime verwenden müssen, verwenden Sie getRunTime (). Exec, das das String-Array als Argumente mit / bin / bash und -c als Argumente verwendet, anstatt das, das einen einzelnen String als Argument verwendet.
GIT FETCH / PULL / PUSH
quelle
Sie müssen einen privaten SSH-Schlüssel einrichten. Sie können auf dieser Seite nachlesen , wie das Setup unter Mac durchgeführt wird. Wenn Sie unter Linux arbeiten, sollte die Anleitung fast dieselbe sein. Unter Windows benötigen Sie ein Tool wie MSYS .
quelle
Es scheint, dass es zumindest bei Verwendung von TortoiseGIT unter Windows möglich ist, die SSH-Schlüssel zu erstellen und diese einfach auf den GIT-Server zu übertragen:
quelle