git 拒绝密码,仅在以 root 身份登录时



摘要

出于某种原因,当我以 root 身份登录时,git 命令的工作方式不同。例如,当我以普通用户身份登录时,我可以克隆存储库,但不能将同一存储库克隆到与 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 根并删除存储库...

根:

# 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似乎可以正常工作。(我没有更改设置以使您能够通过 ssh 直接以 root 身份登录。

设置详细信息

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

结论

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

问题

请注意,系统不会提示您的凡人用户输入密码

,但会提示您的超级用户输入密码。这是一个很大的线索,root的私钥没有加载到可访问的ssh代理中。

解决方案

su 到 root 后,您需要启动 ssh 代理并加载密钥。例如:

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

如果您的密钥在使用ssh-add -l的代理中可见,那么此时您应该能够成功克隆。

警告

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

最新更新