git push to remote repository "Could not read from remote repository"

user1090755 picture user1090755 · Apr 20, 2013 · Viewed 86.8k times · Source

I searched for a while but I can't find a solution to my Problem.

I have a Server I can connect to via ssh with the username git and a local git repository.
Now I want to push my local repository to a newly created one on the Server.

Here is what I did:

  • created a git repository in /home/git/test.git
  • initialized the repository as bare
  • added the remote repository on the local machine
    git remote add test ssh://git@serverIp:/home/git/test.git
  • now I executed the push command:
    git push test master

I always get the

fatal: could not read from remote repository

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

I am working on a local windows 7 machine and want to upload to a linux server.
I can log in via ssh with the git user. I also tried to do this as the root user(to get things to work once) with the same result.
I never get asked for the ssh password.

I really don't know what I am doing wrong.
Before you call this a duplicate, I searched a lot for this problem and none seemed to talk about the same problem.

update:

  • "which git" returns /usr/bin/git
  • PATH echo includes /usr/bin
  • id_rsa and id_rsa.pub files are all set up and withput Passphrase
  • ssh git@serverIp which git-receive-pack works too and returns /usr/bin/git-receive-pack
  • ssh git@serverIp ls /home/git/test.git works
  • all relevant directories are chmod 755
  • git is owner of the repository
  • auth.log file gets no new entries on tried push command
  • GIT_TRACE=2 git push test master returns:

'C:\Program Files (x86)\PuTTY\plink.exe' '-batch' 'git@serverIp' 'git-receive-pack '\''/home/git/test.git'\''' fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

Answer

VonC picture VonC · Apr 20, 2013

In this case, using openssh over putty was key.


Original answer (tips for debugging)

I can log in via ssh with the git user.

That means this works:

ssh git@serverIp

You do have a HOME variable defined, and ssh public/private keys (id_rsa / id_rsa.pub) in %HOME%/.ssh/.

This question suggests a different url:

git remote set-url test git@serverIp:/home/git/test.git

Make sure you did create your git repo as git (and not as root, when you created the git account, as in this question).
ssh git@serverIp "which git" should return the path of the git executable.

Check also that all parent directories have the relevant x (execute) bit set for the user git or the group gitgroup, running ls -ld /home /home/git /home/git/test.git.
Also, getting more info for a git command can be done with:

  • git push --verbose
    or:
  • GIT_TRACE=2 git push test master

If you have a private ssh key with a password, it would be best to first test those ssh commands with a private ssh key not password-protected, to see if the issue persists.
Or, you can keep that password-protected ssh key, but double-check your .bashrc as in this answer.


For any ssh connection issue (where git's password is needed), check:


In your case, since it works with ssh git@serverIp (interactive secure shell), but not with git (which opens a non-interactive secure shell), have a look at this thread, which references this one:

When ssh is started with a commandline, a non-interactive non-login shell is started.
However...bash does not use $BASH_ENV in this case, so setting it in ~/.ssh/environment (e.g. to /etc/profile) doesn't help.
What bash does is source /etc/bashrc and ~/.bashrc.

Make sure that /etc/profile does define the path for git, since a non-login account could be used here (that seems to be the case here, since ssh git@serverIp "which git" worked, and ssh git@serverIp "git --version" should too).

But check also the right issue, and test a chmod 755 on /home, /home/git and /home/git/test.git.