ChatGPT解决这个技术问题 Extra ChatGPT

git: fatal: Could not read from remote repository

git

I am trying to set git up with http://danielmiessler.com/study/git/#website to manage my site.

I have gotten to the last step in the instructions: git push website +master:refs/heads/master

I am working using the git ming32 command line in 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.

One problem here may be that the program is looking for Bill@***.com. when I connect via ssh to my site I have a different username( lets say 'abc'). so maybe this should be abc@***.com. If so I don't know how to change this or if I can push under an alias

I had the same issue, sometimes this error happens when git server isn't reachable or has something like "internal server error".
First please look at .git/config file and see everything is in order. It had wrong set-url and origin values for me.
Perhaps this would solve the issue: help.github.com/articles/connecting-to-github-with-ssh
can you show me the correct order of .git/config and also the .ssh/config ... coz i'm confused abit tough.

A
Abdul Baig

Your ssh key most likely had been removed from ssh agent

ssh-add ~/.ssh/id_rsa

where id_rsa is a ssh key associated with git repo

Update

You may get Could not open a connection to your authentication agent. error to resolve that you need to start the agent first by:

eval `ssh-agent -s`

This worked for me! I spent a long time trying to configure my ~/.ssh/config file to use different keys for different hosts, thought that this file was the problem. In the end, it must have been using the right key for the right host, but that key had been "removed". so ssh-add ~/.ssh/theKeyInQuestion got me back up and running with this repo, didnt know the key removed, or what "removed" even means but at least I was able to get authenticated again. SSH is a total mystery to me even after months of dealing with authentication issues. ssh agent issues are one more thing to be aware of!
This solved it for me, I don't understand why.. It used to work and all of a sudden not, is there a process that removes the key from the agent, can it happen on accident?
In MacBook I use ssh-add -k ~/.ssh/id_rsa
I'm getting Could not open a connection to your authentication agent..
@DanDascalescu try to use eval `ssh-agent -s` to start the ssh-agent firstly
M
Manish Nakar

I was facing same issue a while ago...

my .git/config had

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

I replaced it with

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

and it works now:)


how is this not higher ranked? git@github totally does not work for me
If the repo owner has not set up ssh keys then you will likely have this issue. The fix as indicated is to use https instead, or have the repo owner set up ssh
@smileham this switch the distant link with the repo from a ssh based auth to an https protocol (it will prompt for usr/pwd if required)
this is the correct answer, it worked instantly for me.
This is not an answer. It changes the protocol over which you authenticate. This is not a solution to ssh setup, but totally different way of talking to your git repo
r
rob mayoff

You can specify the username that SSH should send to the remote system as part of your remote's URL. Put the username, followed by an @, before the remote hostname.

git remote set-url website abc@***.com:path/to/repo

ps , is there a way to add the password in so I don't keep having to type it?
edit the file .git/config which has the remote url parameter
@user61629: I know I'm late to the party, but you should consider using private/public key pairs instead of passwords.
Which user name? Computer username or github username?
For Github, you always use the username git. Example: git@github.com:mayoff/uiimage-from-animated-gif.git Github figures out your identity by looking at what SSH key you send.
T
Tombart

Make sure you have correct url in .git/config

url = git@github.com:username/repo.git

If it's your first push, you'll need to set up correct upstream

$ git push -u origin master

You can check which key is used by:

$ ssh -vvv git@github.com

The reply should contain something like this:

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

Also it's possible to define rules for ssh in ~/.ssh/config, e.g. based on aliases:

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

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

You can set connect to different ports, use different username etc. for each alias.


Thank you!! At some point when I cloned my repo, the url was set to https://github.com/user/repo.git (without git@github.com) and so it refused to use my SSH key. Maybe it's because I cloned it using GIthub for Windows originally (?)
I've had to change url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.git to url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.git and it worked again
Damnit, you are awesome. I tried so many other solutions. My url was https: as well :(
The -vvv hint was helpful for me. Now I see that it's saying "Connection closed by XXX.XXX.XXX.X port 22".
Ahhh, DeployHQ says "BitBucket is currently experiencing minor service problems. Please check their status page for more information. status.bitbucket.org" Bingo.
C
CB.

Try removing the GIT_SSH environment variable with unset GIT_SSH. This was the cause of my problem.


Works.. I wonder where I got GIT_SSH environment variable from :)
For windows remove GIT_SSH environment variable from advanced options menu. Worked for me.
How? What do I write in the terminal to do that?
Fixed the issue for me as well
Fixed it for me too. But why does this cause the problem in the first place?
B
Bastin Robin

This is usually caused due to the SSH key is not matching with the remote.

Solutions:

Go to terminal and type the following command (Mac, Linux) replace with your email id. ssh-keygen -t rsa -C "you@email.com" Copy the generated key using following command starting from word ssh. cat ~/.ssh/id_rsa.pub Paste it in github, bitbucket or gitlab respective of your remote. Save it.


Save lots ot time. Thanks
R
Roberto Ferraz

Make sure ssh-agent is running by executing the following command on your terminal:

eval $(ssh-agent -s)

Source: Github documentation


This fixes an issue for me as well. Thanks
This fixed it for me as well. Is there something I should be doing to make sure it is running in the future? Like put it as an entry in my .zshrc file?
This did it for me
F
Foreever

I had a wrong ssh private key for Bitbucket along with the right one in ssh agent.

Deleted all keys first

ssh-add -D

Then added just the right key.

ssh-add ~/.ssh/id_rsa

what is id_rsa ?
@S.M.FazleRabbi id_rsa is the default name for the key file when you create the ssh key
P
Pratik Patel

I had the same problem.

This error means that you have not specified your remote URL location upon which your code will push.

You can set remote URL by 2 (mainly) ways:

Specify remote URL via executing command on Git Bash. Navigate to your project directory Open Git Bash Execute command: git remote set-url origin Mention remote URL direct in config file Navigate to your project directory Move to .git folder Open config file in text editor Copy and paste below lines [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

For more detailed info visit this link.


thanks so much!!! I tried everything and this worked finally.
k
kip2

Another workaround:

Sometimes this happens to me because of network problems. I don't understand the root problem fully, but switching to a different sub-network or using VPN solves it


Exactly my case. Wish I had read this comment. After few hours of debugging, thought of using VPN and it worked.
For me, just "trying again" worked. No idea what the hiccup was.
F
Fabio Antunes

After doing some research I've finally got solution for this, you have declared a environment variable to plink.exe path. So if you remove that path, reopen the git bash and try cloning through SSH it will work.

Refer to this link

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


t
tan75

I had the same error. The solution was following: I've corrected my url in .git/config. Just copied that from HTTPS clone URL. That would be something like that:

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

It worked.


if i wrote this on my config file under windows os, the error arose differently, it said... "/c/Users/asus/.ssh/config: line 5: Bad configuration option: url"
using https over ssh is work fine, it asks username and password
@Kiran, that's not fine.
V
Vega

If after"git push origin master" command u see the error "could not read from remote repository" then try this out

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 

u
user1982195

In your .git/config file

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

And simply

git push YOUR_APP_NAME master:master 

M
Marcelo Agimóvel

If you use Gitlab than you might need to log in and accept Gitlab new terms, before you try to pull or push.


Why the downvote? At same day I solved my problem, it had something to do with new gitlab terms.
Please remove your downvote. This is a valid answer, it happend after gitlab terms change. Accepting gitlab new terms might solve the problem.
M
Mr Coder

updated OCT 2020

In most of the case when you have more than one user access the same git server from a same client system, that time git server confused to with access key with the user both users allowed but when you fire command that time its used default user.

ssh -T git@gitlab.com

see which user are activatly you try to push with that user

the simple solution removes the unused user public key from the git server.

then try to git fetch or pull, push it will work for me


J
Jeff Hoye

In my case I was using an ssh key with a password to authenticate with github. I hadn't set up pageant properly in Windows (only in cygwin). The missing steps were to point the git_ssh environment variable to plink.exe. Also, you need to get github.com into the plink known_hosts.

   plink github.com
   y
   <then ctrl-c>

Hope this helps!

I sure wish intellij would have given me a more useful error, or better yet asked me to type in the ssh key password.


A
Adam

I had a perfectly fine working git and suddenly I got that error when I tried to push to the master. As I found out, it was because the repository host had problems.

If you using GitHub or Bitbucket you can easily check the status at

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

https://i.stack.imgur.com/85OWs.png


GitHub's link no longer functions. Try: githubstatus.com
S
SwiftiSwift

You need to use HTTPS for Git:

Type this into the Terminal:

$ git remote set-url origin abc@***.com:path/to/httpURLRepo

Then commit:

$ git add .
$ git commit -m "This is the commit message"

> For me, using https instead of ssh worked: git clone gitlab.com/user/project.git
C
Chetan Pangam

I have tried everything including generating new key, adding to the GitHub account, editing .ssh/config and .git/config. But still it was giving me the same error. Then I tried following command and it does work successfully.

ssh-agent bash -c 'ssh-add ~/.ssh/id_rsa; git clone git@github.com:username/repo.git'

As mentioned, have you tried running ssh -T git@github.com? That worked for me.
@MikeS. No I did not try that. I will try, if I face similar issue again. Thanks.
L
Leo

I meet the problem just now and fix it by: git config user.email "youremail".

update: The root cause maybe my poor network and poor proxy. I still don't know why it happened, but every time has this error, this command works!!!


s
sailfish009

In my case, The bitbucket's web ssh key setup UI is confusing.

Repository Settings -> Access keys -> Add key : Error

Personal settings -> SSH keys -> Add key : Ok

The public key registration screen is mutually exclusive. You must register the public key only in one place. It seems good to unify them on one screen.


This was exactly my problem, it is really strange why key that is added to the the repository didn't worked.
w
wenwen

For my case, I am using Corporate network (without internet connection) in office. In order to pull code from github, I set https proxy in gitbash and then use https instead of ssh to pull code,it works fine. However when comes to push code, the https proxy won't work. So either switch to Internet network (with internet connection) or set ssh proxy can solve the problem.


w
wizardInCloud

Actually I tried a lot of things to make it work on Win7, since changing the SSH exectun fron native to build-it and backwards and the same error. By chance, i change it to HTTPS in the ".git/config" file as:

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

and it finally worked. So maybe it could work for you as well.


F
FelixSFD

I had the same issue and after a while I saw I'm under root user (with sudo -s). May this help for someone.


I confirm that even when you have set up ssh key on your machine and on the BitBucket, it will still display this error if you try to execute 'git pull' with a 'sudo' command.
G
Guillaume Jacquenot
user@server:/etc/nginx$ cat .git/config 
...
[remote "origin"]
    url = git@gitlab.com:user/.git
    fetch = +refs/heads/*:refs/remotes/origin/*
...

Use ssh instead of https. To use ssh key in git (add ssh key). If you are root, use the ssh key.

$ sudo ssh-keygen
$ cat /root/.ssh/id_rsa.pub 

$ git init
$ git add file
$ git commit -m "add first file"
$ git remote add origin git@gitlab.com:user/example.git 
$ git push -u origin master

m
mraxus

I solved this issue by restarting the terminal (open a new window/tab).

So if you don't really want/need to understand the underlying problem, test method is worth a try before digging deeper :)


This didn't work but I had to turn off my Wi-Fi and then turn it back on.
u
user3885927

I had this problem using gitbash on windows 10. I tried several things to solve this problem, the major ones being these:

Recreated my ssh keys and updated to bitbucket. Didn't help Turned on debugging using this and found out that I was getting "shell request failed on channel 0" as asked here Rebooted my windows PC

None of the above helped. I ended up re-installing Git for windows This took only a few minutes as compared to other things I did and it solved the problem!


why I didn't see your answer 2 days ago? I already spend to much time for this fix.... :(
S
Shuvo Amin

Pretty straightforward solution that worked for me, see below:-

Problem

$ git clone git@github.com:xxxxx/xxxx.git my-awesome-proj
Cloning into 'my-awesome-proj'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

This should also timeout

$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out

This might work

$ ssh -T -p 443 git@ssh.github.com
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.

Override SSH settings

$ vim ~/.ssh/config

# You can also manually open the file and copy/paste the section below
# Add section below to it
Host github.com
  Hostname ssh.github.com
  Port 443

Then try again

$ ssh -T git@github.com
Hi xxxxx! You've successfully authenticated, but GitHub does not
provide shell access.

Try cloning now (should work)

$ git clone git@github.com:xxxxxx/xxxxx.git my-awesome-proj
Cloning into 'my-awesome-proj'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), 22.90 KiB | 4.58 MiB/s, done.

Reference: here => Use HTTPS with Port 443


While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
Thanks for the suggestion, I have updated my answer :)
This did help me. It suddenly stopped working and this was the way to fix it.
D
Damian Alberto Pastorini

In my case it was the postBuffer..

git config --global http.postBuffer 524288000

For reference read: https://gist.github.com/marcusoftnet/1177936