git仅当以root用户身份登录时才拒绝密码

Mat*_*ams 3 git ssh freebsd

摘要

出于某些原因,当我以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.
Run Code Online (Sandbox Code Playgroud)

(然后我开始扎根并删除存储库...)

根:

# 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
Run Code Online (Sandbox Code Playgroud)

我的故障排除尝试

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

设置细节

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

结论

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

Tod*_*obs 5

问题

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

解决方案

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

sudo su - root
eval `ssh-agent`
ssh-add
Run Code Online (Sandbox Code Playgroud)

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

注意事项

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