只有以root用户身份登录时,git才会拒绝密码

时间:2012-06-16 06:58:45

标签: git ssh freebsd

摘要

出于某种原因,当我以root身份登录时,git命令的工作方式不同。例如,当我以普通用户身份登录时,我可以克隆存储库,但我无法将同一个repo克隆到与root相同的目录中。

实施例

普通用户:

> git clone git@192.168.1.103:testing
Cloning into 'testing'...
Enter passphrase for key '/home/Matthew/.ssh/id_rsa': 
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

(然后我su到root并删除回购......)

根:

# git clone git@192.168.1.103:testing
Cloning into 'testing'...
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
fatal: The remote end hung up unexpectedly

我的故障排除尝试

起初我认为这是与ssh相关的某种问题,但是从各种可能的方式来看似乎都能正常工作。 (我没有更改设置以使您能够通过ssh直接以root用户身份登录。)

设置详细信息

  • 我为root用户和其他用户生成了ssh密钥。
  • 我正在尝试克隆repos的机器正在运行FreeBSD 9(我刚安装它 - 试图了解* nix,托管,系统管理员等)。
  • git服务器是mac上的gitolite(我已经使用了一段时间没有问题)

结论

我有一种感觉,对于那些有更多* nix / git印章的人来说这是显而易见的,但到目前为止我还未能弄明白/在互联网上找到答案。谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

问题

请注意,不会提示您的凡人用户输入密码,但超级用户是。这是一个很大的线索,root的私钥没有加载到可访问的ssh-agent中。

解决方案

su su to root后,需要启动ssh-agent并加载密钥。例如:

sudo su - root
eval `ssh-agent`
ssh-add

如果使用ssh-add -l在您的座席中看到您的密钥,那么您应该能够在此时成功克隆。

注意事项

由于您在服务器上使用gitolite,因此无法使用密码身份验证 - 必须使用公钥身份验证。为了实现这一目标,您还需要确保已将root的公钥添加到您的gitolite配置中,并授权root用户使用您希望该帐户访问的任何存储库。

相关问题