【问题标题】:Cannot clone git repository with new user无法使用新用户克隆 git 存储库
【发布时间】:2011-10-24 15:03:57
【问题描述】:

我的设置是 ubuntu - gitolite - msysgit。完成本教程后:

https://sites.google.com/site/senawario/home/gitolite-tutorial

一切正常。

所以我修改并提交 - 推送配置文件:

repo    gitolite-admin
        RW+     =   id_rsa

repo    testing
        RW+     =   @all

repo    project-euler
        RW+     =   tester

Everyhting 已更新等。

我现在想用“tester”用户对此进行测试,但我不能。 git clone tester@myServer:project-euler 不应该工作吗?

如果我尝试上述方法,我会得到:

$ git clone tester@192.168.1.3:project-euler
Cloning into project-euler...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我在用来管理 git 的同一台机器上尝试过这个。

如果我尝试使用它:

git git@192.168.1.3:project-euler

我得到:project-euler 拒绝对 id_rsa 的 R 访问

我认为这是正常的,因为 git 用户没有访问权限。

有什么想法吗?

在关注@VonC 链接后,我创建了前面提到的配置文件。我仍然有同样的问题,所以我和有麻烦的用户一起玩 ssh -v。输出是:

OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Users/Stefanos/.ssh/config
debug1: Applying options for 192.168.1.3
debug1: Connecting to 192.168.1.3 [192.168.1.3] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Stefanos/.ssh/tester type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.3' is known and matches the RSA host key.
debug1: Found key in /c/Users/Stefanos/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /c/Users/Stefanos/.ssh/tester
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

更新

我设法通过使用 git clong git@server:repo 克隆了 repo - 而不是 tester@server:repo。

另外,如果我有配置文件,我将无法以管理员身份登录。它仅作为测试人员记录。可能应该有一种方法来配置它。感谢您的所有帮助。

【问题讨论】:

  • 您是否复制了 tester 的公钥?
  • 我将它们的密钥复制到 /keydir 目录中,然后使用我的 git 帐户推送更改。一切正常。我通过删除存储库并再次克隆它然后检查新密钥是否存在(它存在)来仔细检查。

标签: git msysgit gitolite


【解决方案1】:

首先要做的是检查该新用户的公钥是否已发布到 gitolite 服务器。

  • 查看~git/.ssh/authorizedkeys 的内容,找到包含tester 的行
  • 检查 gitolite-admin repo/keydir 的内容,并查找“tester.pub”文件,其中包含公钥(不要忘记those public keys are named after the usertester.pub 此处)
  • 检查测试人员在他/她的.ssh 中是否有id_rsaid_rsa.pub

【讨论】:

  • 感谢您的回复!我确实检查了 ~git/.ssh/authorizedkeys 并且密钥在那里,当然还有 git 语法“命令等”,但密钥在那里,就像管理员密钥一样。服务器的 /keydir 中也有 tester.pub。第三部分,是否需要在我的机器(Win7)上创建另一个帐户,然后放入C:/Users/tester/.ssh/私钥?
  • @FailedDev:关键在这里,但你能复制那行吗?只是为了检查它的名称是否正确。
  • @FailedDev:您不需要创建任何新帐户,您只需在发出 ssh 请求时选择正确的公钥/私钥即可。请参阅 stackoverflow.com/questions/5357232/…stackoverflow.com/questions/922210/… 中的配置文件
  • 对不起,我现在无法复制线路,我在工作,一切都被阻止了。 :) 当我有新的东西时,我会发布。感谢您的帮助!
  • 该行是:command="/home/git/bin/gl-auth-command tester",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no- PTY支持SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAurnxITUtCLDD / vY00uyB / MuczchAJnXOSH2vMyGyeN8Sgy0hCjWkCGhIr3GvyqMDEyhAGL59 / Pkod0ENDPpMKz2Q5UzVVJdmFCzzCpoqbulik9SIaiBAbfS / ZOB / E + YdfjoxDLSLd1SuebhOzwpmSec / mlorGAVkcrr8nvFoW6pmKQcf8RIxkwc / poBw8CPmW3BSYY7i4Cs9ahw / yxUEgGDUyEAEN3moupsbezCb7a + JtAi2cRkm7VH8iliOb2nC8v / 42SjUYNQm4Q4cBSAm / hh9TfSCNHuE7rXde + wG6jkPrZSl1eXnwxoScSwu04bF9sCqmkBkF723kMDu6NN58Q == tester@192.168.1.3所以我认为,关键是正确的。 Git用户具有相同的格式。
【解决方案2】:

您将 gitolite 用户与 linux 用户混淆了。他们有一些共同的特点,但在其他方面有所不同。在连接到 gitolite 时,您总是在 git URL 中使用名为“git”的用户。无论如何,您尝试连接的任何用户都必须有一个密钥对(~/.ssh/id_rsa[.pub])。所以假设你是“鲍勃”。您的公钥位于 /home/bob/.ssh/id_rsa.pub。该公钥必须添加到 gitolite 配置中。假设您在添加时将其命名为“foo.pub”。现在“foo”是一个有效的 gitolite 用户,您可以在配置中引用它。请记住,本地用户 (bob)、用于连接 gitolite 的用户 (git) 和 gitolite 用户 (foo) 之间没有任何隐式或显式连接。唯一的连接是公钥,它将本地计算机上的“bob”标识为 gitolite 的“foo”。

【讨论】:

  • 所以我猜配置文件中的任何内容都定义了当前用户,这意味着在任何给定时间点每台机器只能有一个用户。我猜这很好:)
  • @Failed: 不,实际上使用 gitolite 您可以将您的 pubkey 文件命名为“foo@laptop.pub”、“foo@desktop.pub”或“foo@somewhereelse.pub”,以便给单个用户多个密钥。 "@.pub" 中的名称并不重要。仅供 gitolite 管理员参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2021-09-01
  • 2018-11-23
  • 2012-03-30
  • 2017-09-09
相关资源
最近更新 更多