git - 克隆远程git仓库问题

标签 git ubuntu gitosis

我正在尝试启动并运行一个 git 存储库,并在我的远程 ubuntu 8.04 服务器上安装了 git 和 gitosis。我还在本地 ubuntu 10.04 机器上运行了 git。
经过大量尝试使其全部正常工作后,我设法使 ssh key 正常工作。当我输入:

ssh git@myserver.com


它返回:

PTY allocation request failed on channel 0

ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in envirement.

Connection to 123.456.789.1 closed.


据我了解,这意味着我成功连接到服务器并且 ssh key 被接受,但是因为它没有收到任何命令,所以它关闭了连接。
当我尝试获取 repo 时:

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


它返回:

Initialized empty Git repository in /home/git/repositories/gitosis-admin/.git/

git@myserver.com's password:


问题是,我没有密码或短语集,也不接受空密码或服务器密码或我本地的机器密码。我知道它根本不应该要求输入密码,因为它应该接受 ssh key (没有密码)并开始下载。
从这一点开始,我不知道如何将远程 repo 获取到我的本地机器,以便我可以开始使用 git。我希望有人能指出我正确的方向。

最佳答案

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

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

解决方案:

  • 放弃使用 sudo 克隆存储库。
  • 生成另一个 SSH key 对 作为根 并将其公共(public)组件添加到您的 gitosis 配置中。

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

    关于git - 克隆远程git仓库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3677928/

    相关文章:

    python - Python shell 和程序中的不同行为

    git - 快速解决与 --theirs 的 GIT merge 冲突

    bash - 别名命令执行不正确

    java - 在 Ubuntu 上执行 Java 会产生乱码输出

    ubuntu - 安装 cuda 8.0 后运行 CUDA 示例失败

    gitosis 授权 key

    macos - 在 mac 上,通过 https 的 git clone 无法进行身份验证

    git - Composer : Multiple Packages in one Repo

    git - 如何查找或更改 Git 存储库服务器的 url

    git - 为什么我不能使用 gitosis 添加新的存储库?