git: fatal: impossible de lire à partir du référentiel distant

358

J'essaie de configurer git avec http://danielmiessler.com/study/git/#website pour gérer mon site.

Je suis arrivé à la dernière étape des instructions: site web git push + master: refs / heads / master

Je travaille en utilisant la ligne de commande git ming32 dans win7

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

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

Un problème ici peut être que le programme recherche Bill@***.com. lorsque je me connecte via ssh à mon site, j'ai un nom d'utilisateur différent (disons «abc»). alors peut-être que cela devrait être abc@***.com. Si oui, je ne sais pas comment changer cela ou si je peux pousser sous un alias

LDN
la source
1
J'ai eu le même problème, parfois cette erreur se produit lorsque le serveur git n'est pas accessible ou a quelque chose comme "erreur de serveur interne".
Morteza Ziyae
2
Veuillez d'abord regarder le .git/configfichier et voir que tout est en ordre. Il y avait des valeurs set-url et origine incorrectes pour moi.
mixdev
Peut-être que cela résoudrait le problème: help.github.com/articles/connecting-to-github-with-ssh
Guy Avraham
Un problème connexe: stackoverflow.com/questions/10127818/…
Anton Tarasenko
pouvez-vous me montrer l'ordre correct de .git / config et aussi le .ssh / config ... coz je suis confus abit difficile.
gumuruh

Réponses:

134

Vous pouvez spécifier le nom d'utilisateur que SSH doit envoyer au système distant dans le cadre de l'URL de votre télécommande. Mettez le nom d'utilisateur, suivi d'un @, avant le nom d'hôte distant.

git remote set-url website abc@***.com:path/to/repo
rob mayoff
la source
3
ps, y a-t-il un moyen d'ajouter le mot de passe afin que je n'aie pas à le taper?
LDN
15
éditez le fichier .git/configqui a le paramètre d'URL à distance
Sayanee
@ user61629: Je sais que je suis en retard à la fête, mais vous devriez envisager d'utiliser des paires de clés privées / publiques au lieu des mots de passe.
code_dredd
Quel nom d'utilisateur? Nom d'utilisateur d'ordinateur ou nom d'utilisateur github?
Agent Zebra
11
Pour Github, vous utilisez toujours le nom d'utilisateur git. Exemple: [email protected]:mayoff/uiimage-from-animated-gif.gitGithub détermine votre identité en examinant la clé SSH que vous envoyez.
rob mayoff le
191

Votre clé ssh a probablement été supprimée de l'agent ssh

ssh-add ~/.ssh/id_rsa

où id_rsa est une clé ssh associée à git repo

Johnny Cage
la source
7
Cela a fonctionné pour moi! J'ai passé beaucoup de temps à essayer de configurer mon fichier ~ / .ssh / config pour utiliser différentes clés pour différents hôtes, pensais que ce fichier était le problème. En fin de compte, il doit avoir utilisé la bonne clé pour le bon hôte, mais cette clé a été «supprimée». donc ssh-add ~/.ssh/theKeyInQuestionme suis à nouveau opérationnel avec cette prise en pension, la clé ne savait pas enlevé, ou ce « enlevé » signifie même , mais au moins j'ai pu s'authentifier à nouveau. SSH est un mystère total pour moi, même après des mois de traitement des problèmes d'authentification. Les problèmes d'agent ssh sont une chose de plus à savoir!
Alex Bollbach
Merci beaucoup. Cela a finalement fonctionné pour moi après avoir essayé de créer, supprimer, etc. les clés SSH dans mon compte GitLab .... Merci !!
Bms bharadwaj
Cela a résolu mon problème. J'ai déjà la clé ssh nouvellement générée ajoutée sur le serveur. Cette clé doit être ajoutée !!
Kashan
1
Cela m'a résolu, je ne comprends pas pourquoi .. Cela fonctionnait et tout d'un coup non, y a-t-il un processus qui retire la clé de l'agent, cela peut-il arriver par accident?
Miguel Stevens
1
Je reçois Could not open a connection to your authentication agent..
Dan Dascalescu
130

Assurez-vous d'avoir l'URL correcte dans .git/config

url = [email protected]:username/repo.git

Si c'est votre première poussée, vous devrez configurer correctement en amont

$ git push -u origin master

Vous pouvez vérifier quelle clé est utilisée par:

$ ssh -vvv [email protected]

La réponse doit contenir quelque chose comme ceci:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

Il est également possible de définir des règles pour ssh dans ~/.ssh/config, par exemple en fonction des alias:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

Vous pouvez définir la connexion à différents ports, utiliser un nom d'utilisateur différent, etc. pour chaque alias.

Tombart
la source
1
Je vous remercie!! À un moment donné, lorsque j'ai cloné mon dépôt, le a urlété défini sur https://github.com/user/repo.git(sans [email protected]) et il a donc refusé d'utiliser ma clé SSH. C'est peut-être parce que je l'ai cloné à l'aide de GIthub pour Windows à l'origine (?)
Jedidja
J'ai dû changer url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gità url = ssh://[email protected]/RaphaelBossek/dev-atlassian-jira-proman.gitet cela a fonctionné à nouveau
Raphael Bossek
Merde, tu es génial. J'ai essayé tant d'autres solutions. Mon URL était également https :(
agrublev
L' -vvvallusion m'a été utile. Maintenant, je vois qu'il dit "Connexion fermée par le port 22 de XXX.XXX.XXX.X".
Ryan
Ahhh, DeployHQ dit "BitBucket rencontre actuellement des problèmes de service mineurs. Veuillez consulter leur page d'état pour plus d'informations. Status.bitbucket.org " Bingo.
Ryan
123

J'étais confronté au même problème il y a quelque temps ...

mon .git / config avait

url = [email protected]:manishnakar/polymer-demo.git

Je l'ai remplacé par

url = https://github.com/manishnakar/polymer-demo.git 

et ça marche maintenant :)

Manish Nakar
la source
8
comment cela n'est-il pas classé plus haut? git @ github ne fonctionne pas du tout pour moi
hlitz
3
Si le propriétaire du référentiel n'a pas configuré de sshclés, vous aurez probablement ce problème. Le correctif indiqué doit être utilisé à la httpsplace, ou configurer le propriétaire du ssh
référentiel
@smileham ceci fait basculer le lien distant avec le repo d'une authentification basée sur ssh vers un protocole https (il demandera usr / pwd si nécessaire)
Vincent Chalmel
c'est la bonne réponse, cela a fonctionné instantanément pour moi.
Kingston Fortune
Pour tous ceux qui se sont git remote set-url ...trompés comme moi OU qui ont stupidement un gros alphabet dans leur nom d'utilisateur (par exemple PeDro) comme moi (!) Devraient suivre ceci. Cela a fonctionné :)
Pe Dro
23

Essayez de supprimer la variable d'environnement GIT_SSH avec unset GIT_SSH. C'était la cause de mon problème.

Scott Lindner
la source
1
Fonctionne .. Je me demande d'où provient la variable d'environnement GIT_SSH :)
StrangeLoop
1
Pour les fenêtres, supprimez la variable d'environnement GIT_SSH du menu des options avancées. A travaillé pour moi.
Splintercell
Comment? Qu'est-ce que j'écris dans le terminal pour faire ça?
Agent Zebra
17

Assurez-vous que ssh-agent est en cours d'exécution en exécutant la commande suivante sur votre terminal:

eval $(ssh-agent -s)

Source: documentation Github

user3362907
la source
Cela résout également un problème pour moi. Merci
Ahmad
Cela me l'a également corrigé. Y a-t-il quelque chose que je devrais faire pour m'assurer qu'il fonctionne à l'avenir? Comme le mettre en entrée dans mon .zshrcdossier?
Brady Dowling
14

Cela est généralement dû au fait que la clé SSH ne correspond pas à la télécommande.

Solutions:

  1. Accédez au terminal et tapez la commande suivante (Mac, Linux) remplacer par votre identifiant de messagerie.

    ssh-keygen -t rsa -C "[email protected]"

  2. Copiez la clé générée à l'aide de la commande suivante à partir du mot ssh.

    cat ~ / .ssh / id_rsa.pub

  3. Collez-le dans github, bitbucket ou gitlab respectif de votre télécommande.
  4. Sauvegarde le.
Bastin Robin
la source
9

J'ai eu le même problème.

Cette erreur signifie que vous n'avez pas spécifié l'emplacement de votre URL distante sur laquelle votre code va pousser.

Vous pouvez définir une URL distante de 2 manières (principalement):

  1. Spécifiez l'URL distante via l'exécution de la commande sur Git Bash.

    • Accédez à votre répertoire de projet

    • Ouvrez Git Bash

    • Exécuter la commande:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Mentionnez l'URL distante directement dans le fichier de configuration

    • Accédez à votre répertoire de projet

    • Déplacer vers le dossier .git

    • Ouvrir le fichier de configuration dans l'éditeur de texte

    • Copiez et collez sous les lignes

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

Pour des informations plus détaillées, visitez ce lien .

Pratik Patel
la source
8

Après avoir fait quelques recherches, j'ai finalement trouvé une solution pour cela, vous avez déclaré une variable d'environnement au chemin plink.exe. Donc, si vous supprimez ce chemin, rouvrez le git bash et essayez de cloner via SSH, cela fonctionnera.

Se référer à ce lien

http://sourceforge.net/p/forge/site-support/2959/#204c

Mohammed Nasiruddin
la source
7

J'ai eu la même erreur. La solution était la suivante: j'ai corrigé mon URL .git/config. Je viens de le copier depuis l'URL du clone HTTPS. Ce serait quelque chose comme ça:

url = https://github.com/*your*git*name*/*your*git*app*.git

Ça a marché.

tan75
la source
si j'ai écrit ceci sur mon fichier de configuration sous windows os, l'erreur est survenue différemment, il a dit ... "/c/Users/asus/.ssh/config: ligne 5: Mauvaise option de configuration: url"
gumuruh
utiliser https sur ssh fonctionne très bien, il demande un nom d'utilisateur et un mot de passe
Kiran
4

Une autre solution:

Parfois, cela m'arrive à cause de problèmes de réseau. Je ne comprends pas complètement le problème racine, mais le passage à un autre sous-réseau ou l'utilisation d'un VPN le résout

kip2
la source
Exactement mon cas. J'aimerais avoir lu ce commentaire. Après quelques heures de débogage, j'ai pensé à utiliser VPN et cela a fonctionné.
Chaitanya Bapat
4

Si vous utilisez Gitlab, vous devrez peut-être vous connecter et accepter les nouveaux termes de Gitlab avant d'essayer de tirer ou de pousser.

Marcelo Agimóvel
la source
Pourquoi le downvote? Le même jour, j'ai résolu mon problème, cela avait quelque chose à voir avec les nouveaux termes de gitlab.
Marcelo Agimóvel
Veuillez supprimer votre downvote. Ceci est une réponse valide, elle est arrivée après le changement des termes de gitlab. Accepter les nouveaux termes de gitlab pourrait résoudre le problème.
Marcelo Agimóvel
3

Dans votre fichier .git / config

[remote "YOUR_APP_NAME"]
    url = [email protected]:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

Et simplement

git push YOUR_APP_NAME master:master 
user1982195
la source
3

Dans mon cas, j'utilisais une clé ssh avec un mot de passe pour m'authentifier avec github. Je n'avais pas configuré correctement le concours dans Windows (uniquement dans cygwin). Les étapes manquantes consistaient à pointer la variable d'environnement git_ssh vers plink.exe. De plus, vous devez placer github.com dans le plink known_hosts.

   plink github.com
   y
   <then ctrl-c>

J'espère que cela t'aides!

Je souhaite que l'intellij m'ait donné une erreur plus utile, ou mieux m'a demandé de taper le mot de passe de la clé ssh.

Jeff Hoye
la source
3

J'ai eu une mauvaise clé privée ssh pour Bitbucket avec la bonne dans l'agent ssh.

Supprimé toutes les clés en premier

ssh-add -D

Ensuite, j'ai ajouté juste la bonne touche.

ssh-add ~/.ssh/id_rsa
Pour toujours
la source
2

Pour mon cas, j'utilise le réseau d'entreprise (sans connexion Internet) au bureau. Pour extraire le code de github, j'ai défini le proxy https dans gitbash, puis j'utilise https au lieu de ssh pour extraire le code, cela fonctionne très bien. Cependant, lorsqu'il s'agit de pousser du code, le proxy https ne fonctionnera pas. Donc, soit passer au réseau Internet (avec connexion Internet) ou définir un proxy ssh peut résoudre le problème.

wenwen
la source
2

En fait, j'ai essayé beaucoup de choses pour le faire fonctionner sur Win7, depuis le changement du natif SSH exectun fron en build-it et en arrière et la même erreur. Par chance, je le change en HTTPS dans le fichier ".git / config" comme:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

et cela a finalement fonctionné. Alors peut-être que cela pourrait aussi fonctionner pour vous.

Ignacio lucatero
la source
2

J'ai eu le même problème et après un certain temps, j'ai vu que j'étais sous root (avec sudo -s). Que cela aide quelqu'un.

Jean-Luc Barat
la source
Je confirme que même lorsque vous avez configuré la clé ssh sur votre machine et sur BitBucket, il affichera toujours cette erreur si vous essayez d'exécuter 'git pull' avec une commande 'sudo'.
ElectroBuddha
2

Si après la commande "git push origin master" u voyez l'erreur "impossible de lire à partir du référentiel distant", essayez ceci

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 
sushmitha
la source
2

J'avais un git de travail parfaitement bien et tout à coup j'ai eu cette erreur quand j'ai essayé de pousser vers le maître. Comme je l'ai découvert, c'était parce que l'hôte du référentiel avait des problèmes.

Si vous utilisez GitHub ou Bitbucket, vous pouvez facilement vérifier l'état à

https://status.github.com/messages ou https://status.bitbucket.org/

entrez la description de l'image ici

Adam
la source
1

J'ai eu la même erreur, ce qui m'a amené à cette réponse qui ne m'a pas aidé. J'essayais de créer un nouveau référentiel "nu" pour la première fois en utilisant les commandes ci-dessous pour suivre vers un emplacement NTFS:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

Mon problème s'est avéré utiliser les barres obliques inverses au lieu des barres obliques dans l'emplacement NTFS lorsque j'essaie d'ajouter l'origine pour définir la (nouvelle) branche en amont suivie.

J'ai dû supprimer l'origine en utilisant:

git remote rm origin

Ensuite, ajoutez à nouveau l'origine en utilisant les barres obliques attendues

git remote add origin //myserver.mycompany.local/myrepository.git

J'espère que cela aidera quelqu'un à l'avenir.

Mike
la source
1

J'ai cette erreur après avoir changé d'ordinateurs. J'utilise SourceTree avec Bitbucket.

J'ai donc dû ajouter la clé SSH générée par SourceTree, sur le nouvel ordinateur, dans Paramètres Bitbucket> Sécurité> Clés SSH, tout en étant connecté à mon compte Bitbucket sur le Web.

eby
la source
1

J'ai résolu ce problème en redémarrant le terminal (ouvrez une nouvelle fenêtre / un nouvel onglet).

Donc, si vous ne voulez pas / n'avez pas vraiment besoin de comprendre le problème sous-jacent, la méthode de test vaut la peine d'essayer avant de creuser plus profondément :)

mraxus
la source
0

Pour ceux qui ont ce problème sur un dépôt distant privé. assurez-vous d'avoir accepté l'accord Xcode sur le serveur distant: il nous a fallu des semaines pour trouver ce correctif

Utilisez cette commande à partir de la ligne de commande: sudo xcodebuild -license

Joseph Bolade Caxton-Idowu
la source
0

je voulais juste partager que j'ai trouvé une solution facile pour cela:

Accès refusé. fatal: impossible de lire à partir du référentiel distant. Veuillez vous assurer que vous disposez des droits d'accès appropriés et que le référentiel existe.

déconnectez-vous simplement de gitlab et reconnectez-vous. Les problèmes doivent ensuite être résolus.

nechama b
la source
0

Lorsque vous utilisez putty / pageant, assurez-vous que vous n'avez pas oublié d'ajouter la bonne clé SSH à pageant, sinon cette erreur apparaît. DUH

écraser
la source
0

Allez sur le terminal MINGW32, mettez cette commande: git branch --set-upstream-to = origin / (branch Name)

Juned Ahmed
la source
0

Si vous obtenez toujours la même erreur, veuillez vous assurer que dans les paramètres git-> onglet ssh- > client ssh à utiliser est défini sur openSSHentrez la description de l'image ici

Anil Kumar B
la source
0

D'après mon expérience, l'une des raisons pour lesquelles ce problème s'est produit est que votre connexion Internet est instable .

Marwan Salim
la source