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.
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?
Ü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
Überprüfen Sie bei jedem Ausführen von GitBash, ob Sie den SSH-Agenten starten:
$ cat ~/.bashrc
start_agent
Sehen, ist dieser Schritt bereits abgeschlossen.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
.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.
ssh-rsa
- und des nachfolgenden == [email protected]
- Bits).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:
Global Public Key
Für das Etikett einEin Global Public Key
Eintrag sollte nun in Ihrer Liste der Schlüssel sichtbar sein.
Ü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
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
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:
Dann:
Bilder von " Integration von Mercurial/BitBucket mit JetBrains-Software "
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
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>
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.
Zwei kleine Klarstellungen, die jemandem die Verwirrung ersparen könnten, die ich durchgemacht habe:
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.
Wenn Sie SSH-Schlüssel für Teamkonten einrichten, wird empfohlen, diese auf persönliche Konten umzustellen. Ein nützlicher Tipp, um e
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.
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
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.
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
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.
Erledige das ssh wie im Atlassian Tutorial und stelle sicher, dass der private Schlüssel im Profil und nicht im Repository eingefügt wird :)
Ich fand, dass die Git-Befehlszeile nicht auf die von meinem Festzug generierten Schlüssel passte (Windows 10).
Siehe meine Antwort auf Serverfault
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
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.
Versuch's einfach
git remote add Origin <HTTP URL>
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.
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