Git on Bitbucket: Immer nach dem Passwort gefragt, auch nach dem Hochladen meines öffentlichen SSH-Schlüssels

178

Ich lud meine ~/.ssh/id_rsa.pubzu Bitbucket des SSH - Schlüssel , wie erklärt , aber Git fragt mich immer noch für mein Passwort bei jeder Operation (wie git pull). Habe ich etwas verpasst?

Es ist ein privates Repository (Abzweigung des privaten Repositorys einer anderen Person) und ich habe es so geklont:

git clone [email protected]:Nicolas_Raoul/therepo.git

Hier ist mein Einheimischer .git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

In derselben Umgebung mit demselben öffentlichen Schlüssel funktioniert Git on Github einwandfrei.
.sshist rwx------, .ssh/id_rsaist -rw-------, .ssh/id_rsa.pubist-rw-r--r--

Nicolas Raoul
quelle

Antworten:

262

Bist du sicher, dass du es mit der ssh-URL geklont hast?

Die URL für den Ursprung besagt, url = https://[email protected]/Nicolas_Raoul/therepo.gitdass bei Verwendung von https unabhängig von Ihren SSH-Schlüsseln nach dem Kennwort gefragt wird.

Was Sie also tun möchten, ist Folgendes:

Öffnen Sie Ihre Konfigurationsdatei in Ihrem aktuellen Repo.

vim .git/config

und ändern Sie die Zeile mit der URL von

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git

zu

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:Nicolas_Raoul/therepo.git
Manojlds
quelle
62
Du hast recht, danke! Ich hatte höchstwahrscheinlich mit der falschen URL geklont. Ich habe die URL .git/configdurch ersetzt [email protected]:Nicolas_Raoul/therepo.gitund jetzt funktioniert es!
Nicolas Raoul
8
und um die Fernbedienung mit git stackoverflow.com/questions/2432764/…
Alex Nolasco
3
Es war Bitbucket, der mir beim Erstellen eines Repositorys eine https-URL vorgeschlagen hat! Woher!
Denis Kniazhev
4
Denken Sie daran, wenn Ihr Bitbucket privat ist und Sie das Git-Protokoll verwenden möchten, müssen Sie Ihren SSH-Schlüssel in Ihren Einstellungen zur BitBuket-Website hinzufügen.
Cevaris
7
Musste die URL ändern in ssh://[email protected]/userName/repoName.git- ohne ssh://Präfix hat es nicht funktioniert.
Trygub
33

Wie hier erläutert , müssen Sie beim Klonen mit der SSH- URL nicht bei jedem Drücken / Ziehen einen Benutzernamen / ein Kennwort eingeben. Überprüfen Sie die obige Antwort von @manojlds

Wenn Sie jedoch mit HTTPS klonen und die Eingabe von Benutzername / Kennwort jedes Mal vermeiden möchten , können Sie die Anmeldeinformationen mit dem folgenden Befehl im Cache speichern :

git config --global credential.helper 'cache --timeout 3600'

Wenn 3600 (Sekunden) 1 Stunde bedeutet, können Sie es gemäß Ihren Anforderungen ändern.

Ajeet Shah
quelle
@atilkan Können Sie in diesem Fall Informationen zu Ihrem Computer / Betriebssystem und Ihrer Git-Version bereitstellen? Und die Fehlermeldung, falls vorhanden, wenn Sie versuchen, die Cache-Einstellung festzulegen.
Ajeet Shah
Ich habe jemandes Repository von Bitbucket geklont, und hier sind meine Fernbedienungen. manecs-MBP:LocationTracker manec$ git remote -v origin https://[email protected]/Vysh1/locationtracker.git (fetch) origin https://[email protected]/Vysh1/locationtracker.git (push)
Banee Ishaque K
@AjeetShah was ist, wenn ich das falsche Passwort eingegeben habe? Würde es auch das falsche Passwort zwischenspeichern?
Anaval
@anaval Warum versuchst du das nicht und gibst danach das richtige Passwort ein, nachdem du den Cache geleert oder deaktiviert hast? Bearbeiten Sie die Antwort und lassen Sie uns wissen, wie Sie das gemacht haben :)
Ajeet Shah
19

Es ist bereits oben beantwortet. Ich werde die oben zu überprüfenden Schritte zusammenfassen.

git remote -vim Projektverzeichnis ausführen . Wenn in der Ausgabe die Remote-URL beginnend mit angezeigt wirdhttps://abc angezeigt wird, benötigen Sie möglicherweise jedes Mal ein Benutzername-Passwort.

Also, um die Remote-URL zu ändern git remote set-url origin {ssh remote url address starts with mostly [email protected]:} .

Jetzt renn git remote -v , um die geänderte Remote-URL zu überprüfen.

Siehe: https://help.github.com/articles/changing-a-remote-s-url/

Shiva Kumar
quelle
16

Hallo Googler aus der Zukunft.

Unter MacOS> = High Sierra wird der SSH-Schlüssel aus Gründen nicht mehr in der KeyChain gespeichert .

Die Verwendung von ssh-add -Knicht mehr überlebt auch Neustarts.

Hier sind 3 mögliche Lösungen .

Ich habe die erste Methode erfolgreich angewendet. Ich habe eine Datei mit dem Namen erstellt configin ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Vaiden
quelle
2
Das braucht mehr Aufmerksamkeit! Ich habe ewig nach einer Lösung gesucht und die erste mit der configDatei /.sshfunktioniert perfekt!
Kitson
1
Diese Antworten lösten mein Problem auf MacOs: cd ~/.ssh+ ls+ nano config(die Datei wurde bereits erstellt) + Code in Vaidens Antwort hinzufügen. Steuern Sie dann X + Y, um die Datei zu speichern.
Sébastien Gicquel
9

Im HTTP-Anforderungsfall ist es auch und alternativ möglich, die Anmeldeinformationen (mit Kennwort) direkt in die URL einzufügen:

http://username:[email protected]/...

Dies erspart Ihnen den Schmerz, Ihre Anmeldeinformationen jedes Mal erneut anzugeben. Ändern Sie einfach Ihre .git / config (die URL).

Sven W.
quelle
10
Aber nicht sicher. Und nicht funktionieren, wenn das Passwort einen Buchstaben wie$%
Gank
3
Wer diesen Kommentar liest , denkt bitte daran: Nur weil er funktioniert , heißt das nicht, dass er richtig ist . Wenn Sie Ihr Passwort dauerhaft irgendwo kopieren, machen Sie es falsch. Dasselbe gilt für diejenigen, die Ordnerberechtigungen immer auf Folgendes festlegen 777: Anhalten, Nachdenken, Nachforschen, Verstehen und dann ordnungsgemäß ausführen.
dKen
9

Keine dieser Antworten half mir, es stellte sich heraus, dass mein Problem etwas anders war. Es war ssh, der jedes Mal nach meinem Passwort fragte, bevor er den Schlüssel schickte. Also musste ich mein Passwort mit diesem Befehl verknüpfen:

ssh-add -K ~/.ssh/id_rsa

Sie werden dann aufgefordert, Ihr Passwort einzugeben und es zu speichern. Dies könnte die Lösung sein, nach der Sie suchen, wenn Sie jedes Mal zur Eingabe eines Passworts aufgefordert werden

Geben Sie die Passphrase für den Schlüssel '/Users//.ssh/id_rsa' ein:

Mehr Infos hier

HINWEIS: Ich habe dies auf meinem Mac-Computer erfolgreich verwendet, aber wie @Rob Kwasowski weiter unten ausgeführt hat, ist die KOption in Großbuchstaben nur für Mac verfügbar . Wenn nicht auf dem Mac, müssen Sie Kleinbuchstaben verwenden k(was wahrscheinlich auch auf dem Mac funktioniert, aber ich habe es nicht getestet).

stackPusher
quelle
1
Das ist großartig, aber es sollte in Kleinbuchstaben geschrieben werden k:ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski
Könnten Sie bitte näher darauf eingehen?
stackPusher
Wie hier erläutert: ssh.com/ssh/add , die Befehlszeilenoption ist in Kleinbuchstaben kund nicht in Großbuchstaben geschrieben, da bei diesen Optionen zwischen Groß- und Kleinschreibung unterschieden wird.
Rob Kwasowski
rechts, aber die Option K in Großbuchstaben fügt den Schlüssel auch dem Schlüsselbund hinzu, während K in Kleinbuchstaben nur den Schlüssel zum Agenten hinzufügt. Ich frage also: "Warum soll der Schlüssel nicht auch zu Ihrem Schlüsselbund hinzugefügt werden?"
stackPusher
1
Bitte beachten Sie die Plattformunterschiede, -Kdie spezifisch für Mac sind: help.github.com/de/articles/error-ssh-add-illegal-option----k
Rob Kwasowski
5
webdev5
quelle
Ich denke, das Step 1ist für Windowsund Step 2ist für, Linuxaber du hast vergessen, es richtig zu erwähnen.
Ajeet Shah
Ich habe diese 3 Schritte auf meiner Windows-Box ausgeführt und es hat funktioniert.
Webdev5
2
In diesem Fall möchte ich hinzufügen, dass wir unter Linux nur Schritt 2 und Schritt 3 für den gleichen Effekt benötigen :)
Ajeet Shah
4

Im Folgenden wird ein Befehlszeilenzugriff über iTerm / Terminal auf Bitbucket vorausgesetzt.

Für MacOS Sierra 10.12.5 zeigte mein System ein gleichwertiges Problem: Bei jeder Verbindung zu Bitbucket wurde nach meiner SSH-Passphrase gefragt.

Das Problem hat mit OpenSSH-Updates in macOS 10.12.2 zu tun, die hier im Technischen Hinweis TN2449 beschrieben werden .

Möglicherweise möchten Sie Ihre Lösung anpassen, aber Folgendes funktioniert, wenn Sie es zu Ihrer ~ / .ssh / config-Datei hinzufügen:

Host *
    UseKeychain yes

Weitere Informationen zu ssh-Konfigurationen finden Sie in den Manpages für ssh_config:

% man ssh_config

Eine andere Sache: es gibt eine gute Zuschreibung auf Super - User hier , die dieses Problem und verschiedene Lösungen diskutiert je nach Ihren Bedürfnissen und Setup.

pob
quelle
2

Ich habe das Repository mit einer HTTPS-URL anstelle einer SSH-URL geklont, daher wurde ich auch nach dem Hinzufügen des SSH-Schlüssels nach dem Kennwort für Bash Shell gefragt.

Ich habe gerade die ./.git/configDatei bearbeitet und den Wert der urlVariablen durch einfaches Ersetzen der geänderthttps:// tossh://

Z.B

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

Gewechselt zu:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...
Swaroop Bhagwat
quelle
1

Möglicherweise müssen Sie Ihre SSH-Identitätsdatei überprüfen. Möglicherweise führen Sie BitBucket an, einen anderen / falschen privaten Schlüssel als den entsprechenden öffentlichen Schlüssel zu suchen, den Sie in BitBucket gespeichert haben.

Überprüfen Sie es mit tail ~/.ssh/config- Sie werden etwas Ähnliches sehen wie:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

Denken Sie daran, dass das Hinzufügen zusätzlicher Identitäten (wie Arbeit und Zuhause) mit dem ssh-addBefehl erfolgen kann, zum Beispiel:

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

Nachdem Sie bestätigt haben, welcher private Schlüssel lokal angezeigt wird, können Sie in diesem Fall Ihr öffentliches Äquivalent verwenden:

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

Und fügen Sie diese Chiffre in BitBucket ein. Ihre Git-Pushs werden jetzt (vorausgesetzt, Sie verwenden den SSH-Klon, wie in den oben genannten Antworten angegeben) ohne Passwort zugelassen, da Ihr Gerät als freundlich eingestuft wird.

Hoffentlich hilft das, es für jemanden aufzuklären.

Gewähren
quelle
0

Obwohl ich 'git clone ssh: //[email protected]: 7999 / projName / projA.git' ausgeführt habe, wurde ich immer noch aufgefordert, ein Passwort für dieses neue Repo einzugeben, das ich geklont habe / config-Datei für andere funktionierende Repos. Es stellte sich heraus, dass es sich um die URL im Abschnitt [remote "origin"] handelt. Für das neue Repo wurde der SSH-Pfad oben festgelegt, für das funktionierende Repo jedoch https: xxx .

Ninos
quelle
0

Ich hatte andere Verrücktheiten beim Einloggen. Ich stieß auf etwas, das völlig dumm schien, aber in meinem Fall funktionierte. Gehen Sie einfach zum MacOS-Schlüsselbund. Suchen Sie das Anmeldesperrsymbol in der Seitenleiste. Klicken Sie zum Abmelden darauf und dann zum Anmelden. Klingt dumm, hat aber meine Probleme gelöst. Einen Versuch wert.

smileBot
quelle