git推送到远程存储库“无法从远程存储库读取”
我搜索了一段时间,但我找不到解决我的问题。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'\'''致命:可能不从远程存储库读取。请确保您拥有正确的访问权限并存在存储库。
在这种情况下,使用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的密码),查询:
-
/var/log/auth.log
, - 的sshd debug session
在你的情况,因为它与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
。
事实证明'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
我在.ssh中设置了密钥,我尝试了每一个url版本,我确信git是test.git的所有者,并且test.git执行位设置。详细只给予额外的“推送”url“消息。哦,我添加了建议的脚本在.bashrc – user1090755 2013-04-20 12:10:16
@ user1090755是你的私人ssh密码密码保护? – VonC 2013-04-20 12:12:23
我本人曾与这2个不同的问题:
plink
(这是使用的Git在Windows上)不接受id_rsa
私钥,因为它是在OpenSSH的2格式=>我不得不将其转换(使用puttygen
)腻子自己.ppk
格式,并通过Git的扩展连接“Remotes
”对话框我指定的路径,文件夹错误的git,因为我的SSH会话被chroot的(这可能是打错字)和我指定什么是我的FTP“
root
“改为”/
“,而改为”/home/www/username/
“。
我理解这一切,使用上述GIT TRACE=2
并且还通过使用procmon
以确定确切的命令行用于plink
,然后用它打如所述的,加入“-v
”选项(“详细”)。
+1。有趣的调试反馈。 – VonC 2014-01-29 11:33:23
您也可以通过做检查您的SSH身份:
$ ssh-add -L
我也有类似的问题。我的身份有一个错误的关键,不记得原因。 我只是删除我的身份(也许你会需要重新添加键):
$ ssh-add -D
然后我也推/拉没有问题。
很好的回答.....你节省了我的时间...自从最后一个小时以来我开始生气...试过所有其他的东西.. – minhas23 2016-07-29 10:42:52
将GIT_SSH环境变量设置为TortoisePlink.exe
(您可能必须为此下载TortoiseGit)而不是PuTTY的plink.exe
的完整路径。这将允许弹出对话框窗口提示输入内容,即确认指纹或输入密码。如果您通过Git使用plink.exe
,则无法键入对plink.exe提示的响应,如果有任何提示,将会导致您看到的致命错误。
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
什么,刚刚发生了什么?它的工作原理我只是重新安装Git选择openssh而不是putty,并将其无问题地推送到远程存储库。 – user1090755 2013-04-20 23:28:39
对,我没有马上看到plink,但我总是在我的git安装中使用openssh。我已经更新了答案。 – VonC 2013-04-20 23:30:21