and*_*ert 5 git url ssh git-clone
我有一台具有 SSH 访问权限的服务器,我想在那里放置一个 Git 原始存储库。我刚刚在本地创建了一个 --bare --shared 存储库,并将其复制到每个 SCP 的服务器上。现在我想根据 SSH url 克隆这个存储库。我试过
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
Run Code Online (Sandbox Code Playgroud)
以及以上的一些组合。但 Git 总是说
"fatal: The remote end hung up unexpectedly"
Run Code Online (Sandbox Code Playgroud)
尽管我可以通过 SSH 使用用户名和密码连接到主机。
是否可以按照我想要的方式使用 git,或者我是否必须以完全不同的方式设置它?
更新:
我将 Git 扩展配置为使用 OpenSSH 而不是 Putty,现在 OpenSSH 要求我在“克隆”后输入密码。当我输入正确的密码时,出现以下错误:
bash: git-upload-pack: command not found
Run Code Online (Sandbox Code Playgroud)
(OpenSSH 似乎可以连接到服务器,因为它希望我在输入其他内容时重新输入密码)所以。现在我需要解决这个新问题。首先:我无法在服务器上安装 git。是否可以在不安装 git 的情况下使“git-upload-pack”和“git-receive-pack”可用?
再次感谢
更新2 - 解决方案:
解决方案是将远程存储库目录集成为每个 SSH/SFTP 的本地目录。我正在使用http://www.expandrive.com/来实现此目的。谢谢
在执行 ssh 时,您需要远程路径中的二进制文件git-upload-pack和git-receive-pack 。
如果没有像这样为存储库中的每个远程链接配置它们
git config remote.origin.uploadpack /somepath/git/git-upload-pack
git config remote.origin.receivepack /somepath/git/git-receive-pack
Run Code Online (Sandbox Code Playgroud)
其中origin是远程的。
建立 ssh 连接时不需要输入密码:
如果您的公钥发布在 ~/.ssh/authorized_keys 上,这应该足够了。
如果您的私钥受密码短语保护,您可能需要密码(在这种情况下,请参阅“ ssh 守护程序要求密码”,您可能需要密码ssh-agent
)。
否则,请参阅“无法将 master 推送到 Github ”以获取更多 ssh 调试技巧,包括:
ssh -vvvT ssh://USERNAME@HOST
(确保 HOME 已定义,特别是如果您使用的是 Windows:请参阅“ Heroku 推送主ssh
问题”)/var/log/secure
,但可能会因操作系统而异)Openssh 是一个更安全的选择(并与 mysysgit 一起打包),但它仍然要求您正确定义 %HOME%。
再次,ssh -vvvT
将在这里提供帮助。
首先:我无法在服务器上安装 git。
是否可以在不安装git的情况下使“git-upload-pack
”和“git-receive-pack
”可用?
不,这是不可能的。
git
sshd
必须安装,并且位于(ssh
服务器上运行的守护程序)的路径中。
OP andineupert在评论中总结道:
由于需要在服务器上安装 git(我无法),我必须将远程 repo-dir 集成为每个 SSH/SFTP 的本地目录。
现在一切正常。
归档时间: |
|
查看次数: |
9345 次 |
最近记录: |