2013-04-20 267 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提示的響應,如果有任何提示,將會導致您看到的致命錯誤。

相關問題