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 git@bitbucket.org: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://Nicolas_Raoul@bitbucket.org/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--

Antworten:


262

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

Die URL für den Ursprung besagt, url = https://Nicolas_Raoul@bitbucket.org/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://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

zu

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
Du hast recht, danke! Ich hatte höchstwahrscheinlich mit der falschen URL geklont. Ich habe die URL .git/configdurch ersetzt git@bitbucket.org: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://git@bitbucket.org/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.


@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://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/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 git@bitbucket.org:} .

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/


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

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:password@bitbucket.org/...

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


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).


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

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.


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/*
        ...
        ...
        ...

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.


0

Obwohl ich 'git clone ssh: //git@stash.xxx.com: 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 .


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.