7

所以我似乎在设置 msysgit 时遇到了一些实际问题。我可以使用 putty 连接到我的 SSH 目录

ssh://user@host:port

我有正确的钥匙。我也可以使用 plink 通过

plink -P PORT user@host -i /path/to/private_key.ppk

当我尝试运行(通过 TortiseGIT)或通过 git bash

git clone ssh://user@host:port/path/to/myapp.git

我只是不断收到错误

在 D:/Git/myapp.git 中初始化空的 Git 存储库
警告:您似乎克隆了一个空的存储库。
致命:远端意外挂断

我检查了 bot /Git/setup.ini 和 TortiseGIT 并且都使用

C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

有谁知道我该如何解决这个问题,因为它让我发疯!

4

4 回答 4

9

这是一个检查清单:

  1. 您尝试连接的服务器上是否启用了 ssh?
  2. 服务器上是否安装了 GIT?
  3. 您是否在服务器上设置了 Git 存储库?
  4. 存储库是否具有正确的权限并在服务器的配置中启用了共享存储库?
  5. 您是否将 ssh 密钥放在 GIT 的正确位置?

    建议:

1:由于您可以使用 putty 进行连接,因此看起来 ssh 设置正常。

2:使用putty连接服务器。输入 git --version您是否得到合理的回复?如果没有,那么您将需要在服务器上安装它。

3:尝试在服务器上设置一个新的存储库。假设它是一个 *nix 风格的服务器,使用 putty 并连接到服务器并使用以下命令创建一个新的存储库,假设您有一个目录 /home/source_code。echo 行只是创建了一个文件,其中包含一些文本,因此我们可以开始做一些事情。

cd /home/source_code
mkdir test_repo
cd /home/source_code/test_repo
echo "first file" > t.txt
git init
git add .
git commit -m "Initial Import"

所以现在我们有了一个包含一个 t.txt 文件的存储库。作为一项规则,您永远不应该将包含对工作副本的更改的存储库推入。在服务器上拥有一个存储库的目的是让人们可以一直推送到它。我们制作了一个“裸”克隆,它只是 git 数据库,这样就不可能有任何工作副本更改。我们将使用这个“裸”克隆作为中央 git 存储库。

cd /home/source_code
git clone --bare test_repo/ test_repo.git

您现在可以摆脱我们设置的临时存储库。

cd /home/source_code/
rm -rf test_repo

在本地计算机上再次尝试克隆

git clone ssh://user@host.com:port/home/source_code/test_repo.git

4:权限:这不会导致克隆、获取或拉取问题,除非您为存储库选择了没有读取权限的位置。如果您在推回时收到 Permission denied 错误,请参阅权限更正

5:为GIT设置公钥/私钥:

  1. 使用 putty 连接服务器
  2. 设置 ~/.ssh 文件夹的权限:chmod 700 .ssh
  3. 在你的 ~/.ssh/authorized_keys 上设置权限:chmod 600 authorized_keys
  4. 生成密钥ssh-keygen -t dsa
  5. 接受它想要使用的文件名
  6. 不要输入密码(只需输入)。稍后您将需要使用密码来重做此操作。
  7. 将 pub 密钥添加到 authorized_keys 文件中:cat id_dsa.pub >> .ssh/authorized_keys
  8. 编辑 /etc/ssh/ssh_config 并添加该行PubkeyAuthentication yes
  9. 重新启动 ssh 守护进程sudo /etc/init.d/ssh restart
  10. 复制id_dsaid_dsa.pub从服务器到本地硬盘驱动器(使用 winscp 或 sftp 或一些此类工具) c:\users\userName\.ssh 目录(这是用于 vista 的位置对于其他版本的 windows 会有点不同)
  11. 设置龟甲git指向C:\Program Files\Git\bin\ssh.exe(不是putty)

命令行 git 和 tortoise git 都应该设置为可以工作。尝试在本地计算机上再次克隆。

git clone ssh://user@host.com:port/home/source_code/test_repo.git

您现在可能想要使用密码重复设置密钥....

于 2009-10-04T06:28:59.073 回答
1

您需要安装 Pageant 并将密钥添加到其中。

还要仔细检查您的 GIT_SSH 环境变量是否设置为使用 plink

于 2009-09-30T13:01:42.300 回答
0

远程仓库中是否有任何内容(即至少一次提交)?

git 说:“警告:您似乎克隆了一个空存储库”

当你想推入空的远程仓库时,你必须使用:

git push URL master
于 2009-09-30T14:09:28.343 回答
0

您是否尝试过使用 ssh user@host:port 从 Git-Bash 连接?它是直接连接还是要求输入密码?

仅当您为 ssh 使用非标准端口时才需要端口,否则它将默认为 22。Putty 是一回事,但请确保您可以从 git bash 连接,因为它通常在 .ssh 中有自己的密钥库用户目录之外的目录。如果您无法通过 Git-Bash 使其正常工作,您需要修复密钥或调试问题所在,请尝试使用指定密钥

ssh -i 密钥文件用户@主机:端口

如果这不起作用或提示您在远程计算机上输入密码,则意味着密钥交换无法正常工作。因此,您需要检查有关 Git-Bash 环境的密钥是否正确设置。特别要确保您已导出 RSA 密钥,而不仅仅是在 Git-Bash 中使用 ppk 密钥。我不相信这是支持的。我不使用 Tortoise-Git,所以对此我无能为力,但我确实经常使用 Git Bash。

于 2009-10-02T23:44:37.527 回答