4

我有一台具有 SSH 访问权限的服务器,我想在那里放置一个 Git 原始存储库。我刚刚在本地创建了一个 --bare --shared 存储库并将其复制到每个 SCP 的服务器上。现在我想根据 SSH url 克隆这个 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"

尽管我可以使用 USERNAME 和 PASSWORD 将每个 SSH 连接到主机。

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

更新:

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

bash: git-upload-pack: command not found

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

再次感谢

更新2 - 解决方案:

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

4

2 回答 2

4

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

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

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

其中origin是遥控器。

于 2012-09-07T19:19:21.013 回答
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 masterssh问题”)
  • 检查服务器上 sshd 的日志(例如 in /var/log/secure,但可能因操作系统而异)

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

再次,ssh -vvvT将在这里提供帮助。

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

不,这是不可能的。

git必须安装,并且在sshdssh服务器上运行的守护程序)的路径中。


OP andineupert在评论中总结道:

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

于 2012-08-01T11:55:49.697 回答