webentwicklung-frage-antwort-db.com.de

Push zum Git-Repository auf Bitbucket nicht möglich

Ich habe ein neues Repository erstellt und bin auf einen seltsamen Fehler gestoßen. Ich habe Git schon einmal bei Bitbucket verwendet, aber ich habe es gerade neu formatiert und jetzt kann ich Git scheinbar nicht zum Laufen bringen. Nachdem ich einen Commit ausgeführt hatte, musste ich meine E-Mail-Adresse und meinen Namen zu den Globals hinzufügen, der Commit war dann aber in Ordnung.

Wenn ich versuche, den Befehl zu verwenden

git Push Origin master

es funktioniert nicht Ich erhalte diese Nachricht:

$ git Push Origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Ich bin hier ratlos. Mein Freund, mit dem ich dieses Repository teile, hat problemlos darauf zugegriffen und es weitergeleitet, aber ich kann es scheinbar nicht zum Laufen bringen.

133
Jason Dahl

Schreiben Sie dies für diejenigen, die gerade erst mit Git und BitBucket unter Windows begonnen haben und mit Bash nicht so vertraut sind (da dies sowohl ein häufiges Problem als auch ein hochrangiges Google-Ergebnis bei der Suche nach der Fehlermeldung in der Frage ist).

Für diejenigen, denen HTTPS nichts ausmacht und die nach einer schnellen Lösung suchen, scrollen Sie zum Ende dieser Antwort, um Anweisungen unter FOR THE LAZY zu erhalten.

Befolgen Sie die nachstehenden Anweisungen, um das eigentliche Problem zu lösen:

Behebung des SSH-Problems so schnell wie möglich

Dies ist eine Reihe von Anweisungen, die von der URL abgeleitet sind, auf die VonC verweist. Es wurde modifiziert, um so belastbar und prägnant wie möglich zu sein.

  • Geben Sie nicht den $ Oder Zeilen ein, die nicht mit $ Beginnen (der $ Bedeutet, dass Sie dies in GitBash eingeben).

  • Öffnen Sie GitBash

Legen Sie Ihre globalen Informationen fest, falls Sie dies noch nicht getan haben:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Auf OpenSSH prüfen:

$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...

Sehen Sie so etwas?

  • Ja: Weiter.
  • Nein: Wechseln Sie zum Abschnitt FÜR FALSCHE oder folgen Sie dem verlinkten Artikel von VonC.

Überprüfen Sie, ob Sie die Schlüssel bereits generiert haben:

$ ls -a ~/.ssh/id_*

Wenn zwei Dateien vorhanden sind, können Sie den nächsten Schritt überspringen.

$ ssh-keygen

Behalten Sie die Standardeinstellungen bei, und geben Sie eine Passphrase ein. Sie sollten nun Ergebnisse mit diesem Befehl sehen:

$ ls -a ~/.ssh/id_*

Suchen Sie nach einer vorhandenen Konfigurationsdatei:

$ ls -a ~/.ssh/config

Wenn Sie ein Ergebnis erhalten, überprüfen Sie diese Datei auf fehlerhafte Informationen. Wenn keine Datei vorhanden ist, gehen Sie wie folgt vor:

$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config

Bestätigen Sie den Inhalt:

$ cat ~/.ssh/config

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa
  • Das einzelne Leerzeichen vor "IdentityFile" ist erforderlich.

Überprüfen Sie bei jedem Ausführen von GitBash, ob Sie den SSH-Agenten starten:

$ cat ~/.bashrc
  • Wenn Sie eine Funktion mit dem Namen start_agent Sehen, ist dieser Schritt bereits abgeschlossen.
  • Wenn keine Datei vorhanden ist, fahren Sie fort.
  • Wenn es eine Datei gibt, die diese Funktion nicht enthält, sind Sie in einer schwierigen Situation. Es ist wahrscheinlich sicher, daran anzuhängen (unter Verwendung der folgenden Anweisungen), aber es kann sein, dass dies nicht der Fall ist! Wenn Sie sich nicht sicher sind, erstellen Sie eine Sicherungskopie Ihrer .bashrc-Datei, bevor Sie die folgenden Anweisungen befolgen, oder fahren Sie mit dem Abschnitt FOR THE LAZY fort.

Geben Sie Folgendes in GitBash ein, um Ihre .bashrc-Datei zu erstellen:

$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo "    echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo "    # spawn ssh-agent" >> ~/.bashrc
$ echo "    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    echo succeeded" >> ~/.bashrc
$ echo "    chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "    /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo "     . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "     ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo "        start_agent;" >> ~/.bashrc
$ echo "    }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo "    start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc

Überprüfen Sie, ob die Datei erfolgreich erstellt wurde (Ihre sollte sich nur dort unterscheiden, wo "Ihr Benutzername" angezeigt wird):

$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  • Schließen Sie GitBash und öffnen Sie es erneut.
  • Sie sollten nach Ihrer Passphrase gefragt werden (für die SSH-Datei, die Sie zuvor generiert haben).
  • Wenn keine Eingabeaufforderung vorhanden ist, haben Sie entweder keine Passphrase festgelegt oder GitBash führt das .bashrc-Skript nicht aus (was seltsam wäre, prüfen Sie den Inhalt!). Wenn Sie dies auf einem Mac (OS X) ausführen, wird .bashrc Standardmäßig nicht ausgeführt - .bash_profile Ist. Um dies zu beheben, fügen Sie dieses Snippet in Ihren .bash_profile Ein: [[ -s ~/.bashrc ]] && source ~/.bashrc

Wenn Sie keine Passphrase eingegeben hätten, hätten Sie beim Starten von GitBash Folgendes gesehen:

Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)

Und das Folgende sollte Ergebnisse liefern:

$ ssh-add -l

Wenn Sie jedoch Folgendes von ssh-add -l Erhalten:

Could not open a connection to your authentication agent.

Der SSH-Agent wurde nicht gestartet, und Ihre .bashrc-Datei ist wahrscheinlich die Ursache.

Wenn Sie beim Starten von GitBash Folgendes sehen:

Initializing new SSH agent...
sh.exe": : No such file or directory

Das bedeutet, dass Sie vergessen haben, das $ mit einem\zu maskieren, als Sie die Datei aufgerufen haben (dh die Variablen wurden erweitert). Erstellen Sie die .bashrc-Datei neu, um das Problem zu beheben.

Stellen Sie sicher, dass der Agent ausgeführt wird und Ihre Schlüssel hinzugefügt wurden:

$ ssh-add -l

Sollte etwas Ähnliches zurückgeben:

2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)

Führen Sie den folgenden Befehl aus, um Ihren öffentlichen Schlüssel abzurufen:

$ cat ~/.ssh/id_rsa.pub

(Es sollte etwas zurückgeben, das mit "ssh-rsa ......" beginnt.

  • Klicken Sie auf das GitBash-Fenstersymbol
  • Klicken Sie auf Bearbeiten
  • Klicken Sie auf Markieren
  • Markieren Sie den öffentlichen Schlüssel mit der Maus (einschließlich des führenden ssh-rsa - und des nachfolgenden == [email protected] - Bits).
  • Klicken Sie mit der rechten Maustaste auf das Fenster (führt eine Kopie durch)
  • Fügen Sie Ihren öffentlichen Schlüssel in Notepad ein.
  • Löschen Sie alle Zeilenumbrüche, sodass es sich nur um eine einzelne Zeile handelt.
  • Drücken Sie CTRL+A Und dann CTRL+C, Um den öffentlichen Schlüssel erneut in Ihre Zwischenablage zu kopieren.

Konfigurieren Sie Ihren privaten Schlüssel mit BitBucket, indem Sie die folgenden Schritte ausführen:

  • Öffnen Sie Ihren Browser und navigieren Sie zur Site BitBucket.org
  • Melden Sie sich bei BitBucket.org an
  • Klicke auf deinen Avatar (oben rechts)
  • Klicken Sie auf Konto verwalten
  • Klicken Sie auf SSH-Schlüssel (unter Sicherheit im linken Menü).
  • Klicken Sie auf Schlüssel hinzufügen
  • Geben Sie Global Public Key Für das Etikett ein
  • Fügen Sie den öffentlichen Schlüssel ein, den Sie aus dem Editor kopiert haben

Ein Global Public Key Eintrag sollte nun in Ihrer Liste der Schlüssel sichtbar sein.

  • Kehren Sie zu GitBash zurück
  • cD in das Verzeichnis mit Ihrem Projekt
  • Ändern Sie Ihren Ursprung in die SSH-Variante (dies ist nicht der Fall, wenn Sie die Schritte FOR THE LAZY ausgeführt haben.)

Überprüfen Sie Ihre Fernbedienungen:

$ git remote -v

Wechseln Sie zur SSH-URL:

$ git remote set-url Origin [email protected]:youraccount/yourproject.git

Überprüfen Sie, ob die Dinge in Ordnung sind:

$ git remote show Origin

Sie sollten so etwas sehen:

Warning: Permanently added the RSA Host key for IP address '...' to the list of known hosts.
* remote Origin
  Fetch URL: [email protected]:youruser/yourproject.git
  Push  URL: [email protected]:youruser/yourproject.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git Push':
    master pushes to master (fast-forwardable)

FERTIG!

Sie können HTTPS anstelle von SSH verwenden. Bei Remote-Vorgängen müssen Sie Ihr Kennwort eingeben (es wird vorübergehend zwischengespeichert, nachdem Sie es einmal eingegeben haben). So können Sie HTTPS konfigurieren:

Für die Faulen

Sie sollten das SSH-Problem wie von VonC beschrieben beheben. Wenn Sie sich jedoch beeilen müssen und nicht über die tools/time/knowledge verfügen, um einen neuen öffentlichen Schlüssel zu generieren im Moment, setzen Sie Ihr Ursprung zur HTTPS-Alternative:

> https://[email protected]/accountname/reponame.git

Verwenden Sie ein GUI-Tool wie TortoiseGit oder Befehlszeilen-Tools .

Hier ist die Dokumentation dieser alternativen Origin-URL.

Befehlszeile zum Hinzufügen eines Ursprungs, falls keiner vorhanden ist:

git remote add Origin https://[email protected]/accountname/reponame.git

Befehlszeile zum Ändern eines vorhandenen Ursprungs:

git remote set-url Origin https://[email protected]/accountname/reponame.git

HINWEIS: Ihr Kontoname ist nicht Ihre E-Mail.

Möglicherweise möchten Sie auch Ihre globalen Informationen festlegen:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

Versuchen Sie dann Ihren Push erneut (kein erneutes Festschreiben erforderlich).

git Push Origin master
220
Graeme Wicksted

Dieser Fehler tritt auch auf, wenn Sie vergessen haben, den privaten Schlüssel zu ssh-agent hinzuzufügen. Mach das mit:

ssh-add ~/.ssh/id_rsa
56
Matthias Braun

Neu formatiert bedeutet, dass Sie wahrscheinlich Ihre öffentlichen und privaten SSH-Schlüssel (in ~/.ssh) gelöscht haben.

Sie müssen sie neu generieren und Ihren öffentlichen SSH-Schlüssel in Ihrem BitBucket-Profil veröffentlichen, wie in " Verwenden Sie das SSH-Protokoll mit Bitbucket ", gefolgt von " Einrichten von SSH für Git mit GitBash dokumentiert = ".

Konten-> Konten verwalten-> SSH-Schlüssel:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_manage_account.png

Dann:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_add_ssh.png

Bilder von " Integration von Mercurial/BitBucket mit JetBrains-Software "

25
VonC

Ich löste dieses Problem, indem ich die Fernbedienung mit folgendem Befehl entfernte:

git remote remove Origin

und dann versucht, remote mit https url anstelle von ssh hinzuzufügen

git remote add Origin httpsUrl

Es fragt nach github-Anmeldeinformationen. Geben Sie die Anmeldeinformationen ein und versuchen Sie dann, diese per Push an git zu senden:

git Push Origin master
17
Ankit Arora

Benötige nur die Konfigurationsdatei unter ~/.ssh
ref: https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html
Füge die unten stehende Konfiguration in die Konfigurationsdatei ein

Host bitbucket.org
 IdentityFile ~/.ssh/<privatekeyfile>
4
MatthewShin

Ich hatte das gleiche problem Meine SSH-Schlüssel wurden richtig eingestellt. Ich habe dieses Problem so behoben.

Verwenden Sie nach dem Erstellen eines neuen Projekts in Bitbucket den Klon. Geben Sie den Klonbefehl im Terminal ein und es sollte ein leeres Projekt auf Ihren Computer klonen. Danach können Sie Ihre Dateien in dieses Verzeichnis kopieren und mit dem Festschreiben und dem Pushen an bitbucket beginnen.

3
Rafael

Zwei kleine Klarstellungen, die jemandem die Verwirrung ersparen könnten, die ich durchgemacht habe:

1 - Verbindungs-URLs unterscheiden sich für HTTPS und SSH

Bei der Verbindung über https verwenden Sie

https://[email protected]/owner-account/repo-name.git

bei einer Verbindung über SSH lautet der Kontoname jedoch immer "git"

ssh://[email protected]/owner-account/repo-name.git

Der Versuch, eine Verbindung zu SSH mit Ihrem Kontonamen herzustellen, führt zu dem Fehler, den das Original-Poster erhalten hat. Auf diese Weise können Sie den Test durchführen, indem Sie eine Verbindung zu git @ herstellen. Anschließend versuchen Sie es versehentlich mit Ihrem Benutzernamen und stellen einen Fehler fest.

2 - SSH-Schlüssel über Teamkonten werden 2017 nicht mehr unterstützt

Wenn Sie SSH-Schlüssel für Teamkonten einrichten, wird empfohlen, diese auf persönliche Konten umzustellen. Ein nützlicher Tipp, um e

2
Paulo

Wenn Sie SourceTree verwenden (ich verwende 2.4.1), habe ich eine einfachere Möglichkeit gefunden, einen SSH-Schlüssel zu generieren und ihn meinen Bitbucket-Einstellungen hinzuzufügen. Dies löste das Problem für mich.

  1. Wechseln Sie in SourceTree zu Einstellungen.
  2. Gehen Sie zur Registerkarte Accounts und wählen Sie Ihren Account aus.
  3. Es sollte eine Option zum Generieren und Kopieren eines SSH-Schlüssels in die Zwischenablage geben.
  4. Sobald Sie das kopiert haben, gehen Sie zu Bitbucket in Ihrem Browser. Gehen Sie zu [Avatar] -> Bitbucket-Einstellungen.
  5. Gehen Sie zu SSH-Schlüsseln.
  6. Klicken Sie auf Schlüssel hinzufügen
  7. Fügen Sie den kopierten Schlüssel ein.

Ich habe von Bitbucket eine Bestätigungs-E-Mail erhalten, dass meinem Konto ein SSH-Schlüssel hinzugefügt wurde.

Als Referenz können Sie unter macOS mit Terminal den folgenden Befehl verwenden, um die für Ihr Gerät generierten Schlüssel anzuzeigen. Hier wird der von Ihnen generierte Schlüssel gespeichert.

ls -la ~/.ssh

Wie bereits erwähnt, hat mir diese Dokumentation geholfen: Verwenden Sie das SSH-Protokoll mit Bitbucket Cloud

1
Sarah

Ich habe diesen Fehler bekommen

Die Verbindung zu bitbucket.org wurde vom Remote-Host geschlossen. fatal: Konnte nicht aus dem Remote-Repository lesen. Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben.

Dann habe ich es versucht

git config --global user.email "[email protected]"

ohne Anführungszeichen gearbeitet.

0

Dies wird wahrscheinlich durch mehrere SSH-Schlüssel im SSH-Agenten (und/oder BitBucket) verursacht. Überprüfen Sie Atlassian-Dokumentation für die Problemumgehung dafür

0
warden

Bei Fehlern:

[Fehler] Zugriff auf das Repository verweigert. Zugriff über einen Bereitstellungsschlüssel ist schreibgeschützt. Schwerwiegend: Lesen vom Remote-Repository nicht möglich. Stellen Sie sicher, dass Sie über die richtigen Zugriffsrechte verfügen und das Repository vorhanden ist.

[Fehler] fatal: Konnte nicht aus dem Remote-Repository lesen.

[Fehler] schwerwiegend: Remote-Helfer für 'https' konnte nicht gefunden werden

Ich habe die folgenden Schritte gelöst:

Installieren Sie zuerst diese Abhängigkeiten:

$ yum install expat expat-devel openssl openssl-devel

Dann entferne git:

$ yum remove git git-all

Jetzt erstelle und installiere Git auf der letzten Version, in diesem Fall:

$ wget https://github.com/git/git/archive/v2.13.0.tar.gz
$ tar zxf v.2.13.0.tar.gz
$ cd git-2.13.0/

Dann für die Konfiguration:

$ make configure
$ ./configure --with-expat --with-openssl

Und zum Schluss installieren Sie wie folgt:

$ make 
$ make install install-doc install-html install-info

das war's, jetzt konfiguriere dein repo mit https:

$ git remote add Origin https://github.com/*user*/*repo*.git
# Verify new remote
$ git remote -v

wenn Sie einen SSH-Schlüssel auf Ihrem Remote-Server konfiguriert haben, müssen Sie ihn löschen.

0
Johan Morales

Erledige das ssh wie im Atlassian Tutorial und stelle sicher, dass der private Schlüssel im Profil und nicht im Repository eingefügt wird :)

0
Hector

Ich fand, dass die Git-Befehlszeile nicht auf die von meinem Festzug generierten Schlüssel passte (Windows 10).

Siehe meine Antwort auf Serverfault

0
HostMyBus

Dieser Fehler wird auch angezeigt, wenn das Repository nicht vorhanden ist. Ich habe alle Antworten ausprobiert, bis ich sah, dass dem Repo-Namen ein Strich fehlte

0
Mirko

Ich benutze MacOS und obwohl ich meinen öffentlichen Schlüssel in Bitbucket eingerichtet hatte, als ich das nächste Mal versuchte, ihn zu pushen, bekam ich

repository-Zugriff verweigert.

fatal: Konnte nicht aus dem Remote-Repository lesen.

Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben und das Repository existiert.

Was ich tun musste, war Schritt 2. Fügen Sie den Schlüssel zum ssh-agent hinzu, wie in Anleitung zur Einrichtung von Bitbucket-SSH-Schlüsseln beschrieben und vor allem der 3. Schritt:

(Nur MacOS) Damit sich Ihr Computer bei jedem Neustart an Ihr Kennwort erinnert, öffnen (oder erstellen) Sie die Datei ~/.ssh/config, und fügen Sie der Datei die folgenden Zeilen hinzu:

Gastgeber *
UseKeychain ja

Hoffe, es hilft einem Mac-Benutzer mit dem gleichen Problem.

0
sstauross

Versuch's einfach

git remote add Origin <HTTP URL>
0
Ashok Joshi

Ich habe den gleichen Fehler für ein Repository erhalten - plötzlich waren und funktionieren alle anderen einwandfrei, wenn ich versuche, Commits zu pushen. Das Problem schien mit dem SSH-Schlüssel zu sein (wie Sie bereits aus den vorherigen Kommentaren wissen) - gehen Sie auf bitbucket zu View Profile Und klicken Sie dann auf Manage Account.

Klicken Sie auf der linken Seite auf SSH Keys Und fügen Sie unter ~/.ssh/das auf Ihrem System vorhandene Verzeichnis hinzu.

Wenn Sie noch keinen generiert haben - verwenden Sie die Anweisungen aus einem der Posts, aber stellen Sie sicher, dass Sie entweder die Standarddatei id_dsa.pub oder eine benutzerdefinierte mit dem Namen verwenden, wobei später die Option -i Mit der erforderlich ist Pfad zum Schlüssel, wenn Sie verbinden, dh.

ssh -i ~/.ssh/customkeyname [email protected]_address

Sobald Sie Ihren lokalen Schlüssel zu Ihrem Konto bei bitbucket hinzugefügt haben, können Sie mit Ihrem Repository interagieren.

0

Ich fand, dass die Lösung, die am besten für mich funktionierte, darin bestand, den Push in kleinere Stücke aufzuteilen.

und Entfernen der großen Screenshot-Bilddateien (10 MB +) von den Commits

Die Sicherheit war am Ende kein Problem, mehr über die Grenzen der Bin-Dateien

0
Harry Bosh