【问题标题】:Setup Git Remote SSH (git-upload-pack / git-receive-pack)设置 Git 远程 SSH (git-upload-pack / git-receive-pack)
【发布时间】:2012-07-30 06:31:11
【问题描述】:

我有一台具有 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"

虽然我可以通过 SSH 使用 USERNAME 和 PASSWORD 连接到 HOST。

是否可以按照我想要的方式使用 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/。 谢谢

【问题讨论】:

    标签: git url ssh git-clone


    【解决方案1】:

    在执行 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 是遥控器。

    【讨论】:

    • 如果包丢失,您如何创建包?
    【解决方案2】:

    建立 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,但可能因操作系统而异)

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

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

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

    不,这是不可能的。

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


    OP andineupert 在 cmets 中结束:

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

    【讨论】:

    • 由于需要在服务器上安装 git(我不能),我不得不将远程 repo-dir 集成为每个 SSH/SFTP 的本地目录。现在一切正常。
    • @andineupert 好的。为了提高知名度,我已将您的结论包含在答案中。
    猜你喜欢
    • 2020-09-15
    • 2013-03-24
    • 2019-04-27
    • 2015-02-11
    • 2013-03-13
    • 1970-01-01
    • 2013-02-25
    • 2015-08-28
    • 1970-01-01
    相关资源
    最近更新 更多