git over ssh:存储库读取访问被拒绝

时间:2011-09-23 16:31:35

标签: git ssh gitosis

我在Linux上设置了一个git服务器,它运行良好:

[git@HOST ~]$ git clone -v git://HOST.com/repositories/Extras
Cloning into Extras...
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 12 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (12/12), 23.54 MiB | 16.63 MiB/s, done.
Resolving deltas: 100% (3/3), done.

请注意,HOST.com并不真实。 :)

我现在希望通过SSH获得相同的功能,因此我可以添加隐私和身份验证。目前,它无法正常工作:

[git@HOST ~]$ git clone -v ssh://HOST.com/repositories/Extras
Cloning into Extras...
Enter passphrase for key '/home/git/.ssh/id_rsa':
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

看起来SSH连接正常,但是git存在一些权限问题。 SELinux未启用。

在/ var / log / messages中,我看到以下内容:

Sep 23 16:26:18 HOST sshd[32115]: Accepted publickey for git from X.X.X.X port 51023 ssh2
Sep 23 16:26:18 HOST sshd[32116]: fatal: mm_request_receive: read: Connection reset by peer
Sep 23 16:26:18 HOST sshd[32115]: pam_unix(sshd:session): session opened for user git by (uid=0)
Sep 23 16:26:19 HOST sshd[32121]: Received disconnect from X.X.X.X: 11: disconnected by user
Sep 23 16:26:19 HOST sshd[32115]: pam_unix(sshd:session): session closed for user git

任何人都对我可能会从哪里开始寻找建议?

谢谢! 麦克

3 个答案:

答案 0 :(得分:0)

看起来你正在使用Gitosis。您是否已将{{gitosis.conf}}配置为允许访问您尝试使用的存储库?你安装了公钥吗?

首先打开gitosis配置中的调试日志记录:

[gitosis]
loglevel = DEBUG

当您使用ssh连接时,这将导致详细日志记录。

此问题的最常见原因是: 强调文字 - 存储库或用户名中的拼写错误。 - 安装了错误的密钥,或密钥文件名与配置中的用户名不匹配。

调试输出将有效地突出显示这些问题。例如,通过调试日志记录连接到我们的本地gitosis存储库包括以下内容:

Access check for 'lars@obliquity.example.com' as
  'writable' on 'gitosis-admin.git'...

(这表明gitosis认为我是谁。)

found 'lars@obliquity.example.com' in 'admins'

(这显示了我与之相关的群组。)

Access ok for 'lars@obliquity.example.com' as
  'writable' on 'gitosis-admin'

(这显示了我的访问权。)

答案 1 :(得分:0)

如果你要花很多时间在这上面,最好改用gitolite。对用户没有任何影响,因为您可以将相同的密钥提交给gitolite admin repo。

对于您当前的问题,请尝试使用-vvvv选项通过SSH访问,以查看正在使用的密钥的详细调试输出等。

希望这有帮助。

答案 2 :(得分:0)

谢谢大家......最后我选择了gitolite,但这并不是问题的根源。这是客户端和SSH服务器之间的一个关键不匹配......我认为我检查过一件简单的事情。一旦我匹配了我用git注册的用户的.pub密钥,以及他们的〜/ .ssh / id_rsa.pub,一切都按预期开始工作。

谢谢!

麦克