设置Git远程SSH(git-upload-pack / git-receive-pack)

时间:2012-08-01 11:07:10

标签: git url ssh git-clone

我有一个具有SSH访问权限的服务器,我想在那里放置一个Git原始仓库。我刚刚在本地创建了一个--bare --shared repo并将其复制到每个SCP的服务器上。现在我想根据SSH网址克隆这个repo。我试过了

ssh://USERNAME@HOST/folder1/folder2/gifolder.git
ssh://USERNAME:PASSWORD@HOST/folder1/folder2/gifolder.git
ssh://USERNAME@HOST:PORT/folder1/folder2/gifolder.git
ssh://USERNAME@HOST:/folder1/folder2/gifolder.git

以及上述的一些组合。但是Git总是说

"fatal: The remote end hung up unexpectedly"

虽然我已经启用了每个SSH连接USERNAME和PASSWORD到主机。

是否可以按照我想要的方式使用git,或者我必须将它设置为完全不同?

更新:

我将Git Extension配置为使用OpenSSH而不是Putty,现在OpenSSH要求我在“clone”之后输入密码。当我输入正确的密码时,我收到以下错误:

bash: git-upload-pack: command not found

(OpenSSH似乎与服务器建立了连接,因为它要我在输入其他内容时重新输入密码)所以。现在我需要解决这个新问题。首先:我无法在服务器上安装git。是否可以在不安装git的情况下制作“git-upload-pack”和“git-receive-pack”?

再次感谢

UPDATE2 - 解决方案:

解决方案是将远程存储库目录集成为每个SSH / SFTP的本地目录。我正在使用http://www.expandrive.com/来达到这个目的。 感谢

2 个答案:

答案 0 :(得分:3)

建立ssh连接时,您不需要输入密码:
如果您的公钥发布在〜/ .ssh / authorized_keys上,这就足够了。

如果您的私钥受密码保护,则可能需要密码(在这种情况下,请参阅“ssh daemon asks for a password”,您可能需要ssh-agent)。

否则,请参阅“Unable to Git-push master to Github”以获取更多ssh调试技巧,包括:

  • ssh -vvvT ssh://USERNAME@HOST(确保定义了HOME,特别是如果您使用的是Windows:请参阅“Heroku push master ssh problem”)
  • 检查服务器上sshd的日志(例如在/var/log/secure中,但它可能因Os而异)

Openssh是一个更安全的选择(并与mysysgit一起打包),但它仍然要求您正确定义%HOME%。

同样,ssh -vvvT会在这里提供帮助。

  

首先:我无法在服务器上安装git   是否可以在不安装git的情况下使“git-upload-pack”和“git-receive-pack”可用?

不,这是不可能的。

必须安装

git,并且路径为sshd(服务器上运行的ssh守护程序)。


OP andineupert在评论中结束:

  

由于需要在服务器上安装git(我不能),我必须将远程repo-dir集成为每个SSH / SFTP的本地目录。
  现在一切正常。

答案 1 :(得分:2)

您需要二进制文件 git-upload-pack &正在执行ssh时,远程路径中的 git-receive-pack

如果没有为您的存储库中的每个远程链接配置它们,就像这样

git config remote.origin.uploadpack /somepath/git/git-upload-pack
git config remote.origin.receivepack /somepath/git/git-receive-pack

原点是遥控器。