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

标签 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.

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

根:

# 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 身份直接登录。)

设置详情

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

结论

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

最佳答案

问题

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

解决方案

在你 su 到 root 之后,你需要启动你的 ssh-agent 并加载你的 key 。例如:

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

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

注意事项

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

关于git拒绝密码,仅当以root身份登录时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061495/

相关文章:

macos - 为什么我无法使用 ssh 打开应用程序?

linux - 没有中央存储库的 Git 是一个很好的工作流程吗?

带有大文件的 Git

Git CodeCommit 凭据不断以 Mac OS X 上的钥匙串(keychain)访问结束

ssh - 如何在首次启动时从控制台/在控制台下接受 teamviewer 许可协议(protocol)

bash - 用另一个命令的返回值替换 bash 命令输出中的子字符串(例如,将时间戳转换为日期)

git - 狂欢 :/gradlew: No such file or directory (Windows)

python - 如何在 Linux 中使用不同的参数并行运行 python 脚本?

c - 进程如何查询它何时开始?

kernel - 向 FreeBSD 内核添加带参数的系统调用