2

我正在尝试启动并运行一个 git 存储库,并在我的远程 ubuntu 8.04 服务器上安装了 git 和 gitosis。我还在本地 ubuntu 10.04 机器上运行了 git。

经过大量尝试使其全部正常工作后,我设法使 ssh 密钥正常工作。当我输入:

ssh git@myserver.com

它返回:

PTY 分配请求在通道 0 上失败

错误:gitosis.serve.main:环境中需要 SSH_ORIGINAL_COMMAND。

与 123.456.789.1 的连接已关闭。

据我了解,这意味着我成功连接到服务器并且 ssh 密钥被接受,但是因为它没有收到任何命令,所以它关闭了连接。

当我尝试获取 repo 时:

sudo git clone git@myserver.com:gitosis-admin.git

它返回:

在 /home/git/repositories/gitosis-admin/.git/ 中初始化空的 Git 存储库

git@myserver.com 的密码:

问题是,我没有密码或短语集,也不接受空密码或服务器密码或我本地的机器密码。我知道它根本不应该要求输入密码,因为它应该接受 ssh 密钥(没有密码)并开始下载。

从这一点开始,我不知道如何将远程 repo 获取到我的本地机器,以便我可以开始使用 git。我希望有人能指出我正确的方向。

4

1 回答 1

0

身份验证在您的第一个测试 ( ssh git@server) 中有效。如果身份验证失败(或因提示而停止),您将永远不会看到来自gitosis的消息。当您尝试执行正常的非命令 ssh而不是让git在内部使用ssh时,您报告的警告和错误是可以预料的。

但是,您在稍微不同的环境中进行了克隆(在sudo下)。问题可能是sudo下的ssh没有使用非sudo、test ssh使用的私钥。在我的测试中,始终使用来自 的文件,即使 HOME 指向普通用户的主目录。sudo ssh~root/.ssh

解决方案:

  • 放弃使用sudo克隆存储库。
  • 以 root 身份生成另一个 SSH 密钥对,并将其公共组件添加到您的 gitosis 配置中。

还有另一种方式,但它是一种丑陋的方式;我只会留下一点提示,因为这对我来说似乎是个坏主意。您可能会滥用 root 权限来读取其他用户的私钥文件(如果有密码,您仍然需要输入密码)。

于 2010-09-10T03:42:48.107 回答