2013-04-20 265 views
31

我搜索了一段时间,但我找不到解决我的问题。git推送到远程存储库“无法从远程存储库读取”

我有一个服务器,我可以通过ssh连接到用户名git和本地git存储库。
现在我想推送我的本地存储库到服务器上新创建的一个。

这里是我做过什么:

  • /home/git/test.git
  • 创建一个Git仓库初始化为裸
  • 添加远程仓库在本地机器
    git remote add test ssh://[email protected]:/home/git/test.git
  • 上我现在执行的库推送命令:
    git push test master

我总是得到

fatal: could not read from remote repository 

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

我在本地Windows 7机器的工作和要上传到Linux服务器上。
我可以通过SSH登录git用户。 我也尝试做这个,作为root用户(让事情工作一次)得到相同的结果。
我永远不会被要求ssh password

我真的不知道我在做什么错。
在你称之为重复之前,我搜索了很多这个问题,而且似乎没有人谈论过同样的问题。

更新:

  • “这混帐” 的回报在/ usr /斌/ git的
  • PATH回声包括在/ usr/bin中
  • id_rsa和id_rsa.pub文件都建立和withput口令
  • SSH的git @ SERVERIP这混帐收到包也工作并返回在/ usr/bin中/混帐接收包
  • SSH的git @ SERVERIP LS /home/git/test.git工作
  • 个所有相关的目录,是搭配chmod 755
  • Git是仓库
  • auth.log文件中获取上尝试推出指令没有新的条目
  • GIT_TRACE = 2混帐推测试大师回报业主:

    “ C:\ Program Files(x86)\ PuTTY \ plink.exe''-batch''git @ serverIp''git-receive-pack'\''/ home/git/test.git'\'''致命:可能不从远程存储库读取。请确保您拥有正确的访问权限并存在存储库。

+0

plink?你可以试试openssh吗? (http://stackoverflow.com/a/7697167/6309,http://guides.beanstalkapp.com/version-control/git-on-windows.html) – VonC 2013-04-20 22:57:05

+2

什么,刚刚发生了什么?它的工作原理我只是重新安装Git选择openssh而不是putty,并将其无问题地推送到远程存储库。 – user1090755 2013-04-20 23:28:39

+0

对,我没有马上看到plink,但我总是在我的git安装中使用openssh。我已经更新了答案。 – VonC 2013-04-20 23:30:21

回答

17

在这种情况下,使用OpenSSH在腻子是关键。


原来的答复(提示调试)

我可以通过与git用户SSH登录。

,这意味着这个工程:

ssh [email protected] 

你确实有定义的HOME变量,并在%HOME%/.ssh/ SSH公钥/私钥(id_rsa/id_rsa.pub)。

This question提出不同的URL:

git remote set-url test [email protected]:/home/git/test.git 

确保你没有创建您的git回购为git的(而不是根,在创建git的帐户,如this question)。
ssh [email protected] "which git"应该返回git可执行文件的路径。

检查也是所有的父目录有相关x(执行)位设置为用户git或组gitgroup,运行ls -ld /home /home/git /home/git/test.git

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

如果你有密码的SSH私钥,它会
此外,获得更多信息的一个git命令可以用做最好首先用私钥ssh密钥而不是用密码保护来测试这些ssh命令,以查看问题是否仍然存在。
或者,您可以保留该密码保护的ssh密钥,但double-check your .bashrc as in this answer


对于任何ssh连接问题(在需要Git的密码),查询:


在你的情况,因为它与ssh [email protected](交互式安全外壳)一起使用,但不与git(whi CH打开一个非交互式安全Shell),看看this thread,它引用this one

SSH时开始一个命令行,非交互式非登录shell启动。
但是...bash不会在这种情况下使用$BASH_ENV,在~/.ssh/environment所以将其设置(例如,以/etc/profile)并没有帮助。
bash的功能是源码/etc/bashrc~/.bashrc

确保/etc/profile确实定义了path for git,因为non-login account could be used here(似乎在这里是如此,因为ssh [email protected] "which git"工作,并ssh [email protected] "git --version"也应该如此)。

但也检查正确的问题,并在/home,/home/git/home/git/test.git上测试chmod 755

+3

事实证明'ssh://'url也是[也支持](http://git-scm.com/book/ch4-1.html#The-SSH-Protocol),但它被指定为错误OP。 'ssh:// git @ serverIp:/ home/git/test.git'由于多余的冒号而无效。它应该是'ssh:// git @ serverIp/test.git',或者如你所建议的那样,'git @ serverIP:/ home/git/test.git'或'git @ serverIp:test.git'。 – jszakmeister 2013-04-20 11:38:37

+0

我在.ssh中设置了密钥,我尝试了每一个url版本,我确信git是test.git的所有者,并且test.git执行位设置。详细只给予额外的“推送”url“消息。哦,我添加了建议的脚本在.bashrc – user1090755 2013-04-20 12:10:16

+0

@ user1090755是你的私人ssh密码密码保护? – VonC 2013-04-20 12:12:23

6

我本人曾与这2个不同的问题:

  1. plink(这是使用的Git在Windows上)不接受id_rsa私钥,因为它是在OpenSSH的2格式=>我不得不将其转换(使用puttygen)腻子自己.ppk格式,并通过Git的扩展连接“Remotes”对话框

  2. 我指定的路径,文件夹错误的git,因为我的SSH会话被chroot的(这可能是打错字)和我指定什么是我的FTP“root“改为”/“,而改为”/home/www/username/“。

我理解这一切,使用上述GIT TRACE=2并且还通过使用procmon以确定确切的命令行用于plink,然后用它打如所述的,加入“-v”选项(“详细”)。

+0

+1。有趣的调试反馈。 – VonC 2014-01-29 11:33:23

6

您也可以通过做检查您的SSH身份:

$ ssh-add -L 

我也有类似的问题。我的身份有一个错误的关键,不记得原因。 我只是删除我的身份(也许你会需要重新添加键):

$ ssh-add -D 

然后我也推/拉没有问题。

+0

很好的回答.....你节省了我的时间...自从最后一个小时以来我开始生气...试过所有其他的东西.. – minhas23 2016-07-29 10:42:52

0

将GIT_SSH环境变量设置为TortoisePlink.exe(您可能必须为此下载TortoiseGit)而不是PuTTY的plink.exe的完整路径。这将允许弹出对话框窗口提示输入内容,即确认指纹或输入密码。如果您通过Git使用plink.exe,则无法键入对plink.exe提示的响应,如果有任何提示,将会导致您看到的致命错误。

相关问题